0

如何在 JTextArea 中显示任何非英文字符?我尝试了不同的方法,但没有一个有效。以下代码为任何非英语字符(如日语)打印乱码。在调试模式下,变量 msgUtf8Str 确实正确显示了本地字符。支持的字符集可以很大,示例包括:日语、中文(普通话)、法语、德语等。

String msgUtf8Str = null;
byte[] msgUtf8= message.getBytes(Charset.forName("UTF-8"));
try
{
    msgUtf8Str = new String(msgUtf8, "UTF-8");
}
catch(Exception ex){}       
txtMsg.append(msgUtf8Str + "\n");
4

1 回答 1

2

删除除最后一行之外的所有代码。

您正在使用 UTF-8 字符集转换message为字节,然后使用相同的字符集将其转换回字符串。换句话说,您进行了毫无意义的往返转换。

原来的字符串 ,message已经适合显示非英文字符了。您不需要以任何方式使用字符集。

例如:

String message = "\u65e5\u672c\u8a9e \u4e2d\u6587 Fran\u00e7ais f\u00fcr";
textMsg.append(message).append("\n");

这是一个小演示:

import java.awt.EventQueue;
import javax.swing.JOptionPane;

public class I18NDemo {
    public static void main(String[] args) {
        final String message =
            "\u65e5\u672c\u8a9e \u4e2d\u6587 Fran\u00e7ais f\u00fcr";

        EventQueue.invokeLater(new Runnable() {
            public void run() {
                JOptionPane.showMessageDialog(null, message);
                System.exit(0);
            }
        });
    }
}
于 2014-12-22T21:39:21.973 回答