Originariamente inviato da novainvicta
ho adattato un metodo preesitente
public static String loadfile(String filename, String enc)throws IOException, UnsupportedEncodingException{
String newline = System.getProperty("line.separator");
String buffer;
InputStream in = new FileInputStream(filename);
//StringBuffer ris=new StringBuffer();
String ris=null;
// Set up character stream
BufferedReader r = new BufferedReader(new InputStreamReader(in, enc));
while ((buffer = r.readLine()) != null) {
ris=buffer;// + newline;
}
r.close();
return ris;
}
Questo metodo non è il massimo per quanto riguarda un corretto trattamento delle eccezioni. Non basta dichiararle nel throws. Che succede se readLine lancia una eccezione? Che in primo luogo r.close() non lo esegui.
Poi cosa vuoi fare con il metodo? Leggere un intero file di testo e metterlo in un oggetto String. Non mi sembra che funzioni così il tuo metodo ... non vedo accodamenti. E comunque sarebbe altamente inefficiente accodare ogni volta a un String.
Originariamente inviato da novainvicta
il carattere usato è il BIG5 spedito tramite parametro nel metodo
Ok, Big-5 è il charset adatto per il "traditional chinese".
Originariamente inviato da novainvicta
ed è qui che mi inchiodo... ho letto che swing dovrebbe già essere compatibile con il Big5
Swing non c'entra nulla con i vari charset (Big-5, ISO-8859-1, ecc...). Java supporta da sempre il set di caratteri Unicode e basta, i 'char' sono a 16 bit e rappresentano caratteri in UTF-16.
Originariamente inviato da novainvicta
per quanto riguarda il font, se navigo sul web con firefox, vedo tranquillamente siti in cinese questo mi fa pensare che il font sià già installato
Beh, bisogna vedere.
Compila e prova questo codice:
codice:
import javax.swing.*;
public class Prova
{
public static void main (String[] args)
{
SwingUtilities.invokeLater (new Runnable ()
{
public void run ()
{
JFrame frame = new JFrame ("Prova carattere");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.setSize (200, 200);
JLabel label = new JLabel ("\u8C93");
label.setFont (label.getFont ().deriveFont (60.0f));
frame.add (label);
frame.setVisible (true);
}
});
}
}
Se vedi il carattere

allora il sistema è in grado di visualizzare i caratteri cinesi (per inciso, il carattere sopra vuol dire "gatto" in cinese .... ma non chiedermi come si pronunci :P
)
Il carattere sopra (vedi il codice nel sorgente) è il carattere Unicode U+8C93. Come sia codificato in Big-5, non lo so. Quando lavori con le stringhe in Java, non c'entra più nulla il Big-5 o altro ... ma solo l'Unicode è importante.