无法在Java控制台中打印泰语字符串值
public static void main(String [] args){
String engParam = "Beautiful";
String thaiParam = "สวย";
System.out.println("Output :" + engParam + ":::" + thaiParam);}
输出显示如下:
Output :Beautiful:::à?ªà??à?¢
我认为System.out.println将无法使用默认控制台设置来打印UTF-8字符。还有其他方法可以解决此问题吗?需要帮助。
最佳答案
您没有指定环境,但是这种方法在Windows 10中从我的IDE以及“命令”窗口中都对我有效:
首先,使用支持泰语字符的字体。但也请确保可以在“命令”窗口中而不是仅在IDE中设置所选字体。有些可以(例如Courier Mono Thai),有些则不能(例如Angsana New)。您可以将注册表弄乱以添加字体选择,但是默认情况下可以使用Courier Mono Thai,所以我使用了那个字体。
确定了可以在“命令”窗口中设置的字体后,如果其默认字体不能处理泰语字符,则也可以在IDE中使用该字体。
以下是使事情正常进行的步骤:
下载字体Courier Mono Thai。您可以从几个网站下载它,但我got it from here。
安装下载的字体。在Windows 10上,只需在文件资源管理器中选择它(Courier_MonoThai.ttf),右键单击,然后从上下文菜单中选择“安装”。
安装字体后,在“命令”窗口中将其设置为默认字体。打开命令窗口,单击右上角的图标,选择属性,然后选择Courier Mono Thai作为字体:
在您的IDE中运行该应用程序。如果源代码或输出未正确显示泰语字符,请更改字体。我在NetBeans中使用了Courier Mono Thai,一切看起来都不错:
最后在“命令”窗口中运行。泰语字符可能无法正确呈现。要解决此问题,只需在运行应用程序之前将代码页更改为the one that supports Thai(chcp 874):
这些说明特定于Windows10。如果您在其他环境中运行,请使用平台和IDE的完整详细信息更新问题。
19/15/19更新,提供了一种替代方法:
代替从“命令”窗口使用“代码”页面874(泰语),您可以这样做:
使用UTF-8字符集的Create a PrintStream
,并使用该PrintStream
写入输出。
在“命令”窗口中,使用代码页65001(UTF-8)。
这是代码:
package thaicharacters;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
public class ThaiCharacters {
public static void main(String[] args) throws UnsupportedEncodingException {
String engParam = "Beautiful";
String thaiParam = "สวย";
// Write the output to a UTF-8 PrintStream:
PrintStream ps = new PrintStream(System.out, true, StandardCharsets.UTF_8.name());
ps.println("UTF-8: " + engParam + ":::" + thaiParam);
}
}
这是“命令”窗口中的输出,显示如下:
使用默认代码页(437)或泰语代码页(874)时,泰语字符无法正确呈现。
使用UTF-8代码页(65001)可以正确显示泰语字符: