无法在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作为字体:

java - Java输出中未显示泰语-LMLPHP
在您的IDE中运行该应用程序。如果源代码或输出未正确显示泰语字符,请更改字体。我在NetBeans中使用了Courier Mono Thai,一切看起来都不错:
java - Java输出中未显示泰语-LMLPHP
最后在“命令”窗口中运行。泰语字符可能无法正确呈现。要解决此问题,只需在运行应用程序之前将代码页更改为the one that supports Thai(chcp 874):
java - Java输出中未显示泰语-LMLPHP


这些说明特定于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)可以正确显示泰语字符:


java - Java输出中未显示泰语-LMLPHP

09-27 12:57