Java汉字问题解决方案 来源
http://www.chinabs.net/ 佚名
1. 复制字体文件(以win95环境为例) cd \lib copy font.properties.zh font.properties 另外有font.properties.zh_TW(繁体)、font.properties.ja(日文) 和font.properties.ko(韩文)可供选择。 2. 支持中文的字体 Dialog, Dialoginput, Serif, Sansserif, Monospaced 注意:其他字体如TimesRoman, Courier等均不支持中文 3. 程序设计上要注意的问题 a. 不要使用DataInputStream与DataOutputStream,而要用 BufferedReader与BufferedWriter。例如: BufferedReader in=new BufferedReader (new InputStreamReader(new FileInputStream(file))); BufferedWriter out=new BufferedWriter (socket.getOutputStream()); 详细资料请参考jdk文档。 b. Properties类的save()和load()方法中文支持亦有问题。建议 不要使用它们,而用BufferedReader与BufferedWriter自行写 输入输出。 c. 对程序员而言,字符串无需任何转换(我指String.getBytes() 方法),亦无须使用Locale类。如果你还是担心,可在程序开头 使用以下方法: Locale.setDefault(Locale.SIMPLIFIED_CHINESE); 但是这样做会使你的程序失去支持多内码的能力。不推荐使用。 ^^^^^^^^^^ 4. 测试心得 以上方法在win95平台上经测试完全没问题。java.awt包中的组件, 包括Label, Button, TextField, TextArea, List等等均无问题,而且 Graphics.drawString()方法亦可正常画出中文。另外文本文件的读写、 网络的文本传输均未发现问题。 另外,jre是分英文版和国际版的,若不使用国际版,就无法支持 中文以及其他内码。jdk则肯定支持中文。 5. 仍存在的小问题 TextComponent(即TextField与TextArea)的selectAll()方法。因 String.length()求出的长度是unicode的长度,若文本中有中文,该 方法无法把文本全部选上。 另外,TextComponent内亦无法输入中文,需使用copy/paste。 |
关联文档