gpt4 book ai didi

java - JTextArea 中的国际化字符串

转载 作者:行者123 更新时间:2023-12-02 05:07:52 26 4
gpt4 key购买 nike

如何在 JTextArea 中显示非英文字符?我尝试了不同的方法,但没有一个有效。以下代码会打印任何非英语字符(例如日语)的乱码。在 Debug模式下,变量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");

最佳答案

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

您正在使用 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);
}
});
}
}

关于java - JTextArea 中的国际化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27608797/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com