/* Programme de traduction d'UTF-8 en ASCII-HTML au format "entités décimales" 
   en mettant en gras les caractères qui sortent du plan de base. 
   Réalisation en Java */

import java.io.BufferedReader;
import java.io.PrintWriter;
import java.io.InputStreamReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Vector;

class Utf8ToHTML {
	
	public static Vector<String> trans(Vector<String> tablignes) throws Exception{
	    int nblignes = tablignes.size();
	    Vector<String> rtab = new Vector<String>(nblignes);
        for( String ligne : tablignes ){
            String rligne = "";
			for( int i = 0; i< ligne.length(); i++ ){
               int nb = ligne.codePointAt(i);
               if( nb < 128 ){ // ASCII
                   rligne += ligne.charAt(i);
               }else{
                   if( nb < 65536 ){ // BMP                  
                       rligne += "&#"+nb+";";
                   }else{ // Plan supplémentaire
                        rligne += "<b>&#"+nb+";</b>";
                   }
               }  
           }
          rtab.addElement(rligne+"<br />\n");
       }
       return rtab;
     } // trans


     public static void main(String[]args) throws Exception{
         
         BufferedReader entree = 
             new BufferedReader ( 
				new InputStreamReader(new FileInputStream (args[0]), "UTF-8") );
		 PrintWriter sortie =
		     new PrintWriter(new FileOutputStream (args[1])); // ASCII
		     
         Vector<String> lignes = new Vector<String>();
         String ligne = entree.readLine();
         do {
             lignes.addElement(ligne);
             ligne = entree.readLine();
         }while ( ligne != null );

         Vector<String> rlignes = trans(lignes);
         
         for( String rligne : rlignes ){
            sortie.print(rligne);
         }
         sortie.close();
    }// main
           
}// Utf8ToHTML