为什么'';在java中打印unicode字符时显示为输出

为什么'';在java中打印unicode字符时显示为输出,java,unicode,Java,Unicode,在java中打印某些unicode字符时,输出为“?”。为什么会这样?有没有办法打印这些字符 这是我的密码 String symbol1="\u200d"; StringBuilder strg = new StringBuilder("unicodecharacter"); strg.insert(5,symbol1); System.out.println("After insertion..."); System.out.pr

在java中打印某些unicode字符时,输出为“?”。为什么会这样?有没有办法打印这些字符

这是我的密码

String symbol1="\u200d";
        StringBuilder strg = new StringBuilder("unicodecharacter");
        strg.insert(5,symbol1);
        System.out.println("After insertion...");
        System.out.println(strg.toString());
输出为 插入后。。。
unico?取消字符

您的字符编码与您的字符或屏幕上支持的字符不匹配


我会彻底检查您使用的是哪种编码,并尝试确定您是否正确读取、存储或打印了值。

,由Joel Spolsky撰写,关于此主题。它不会直接帮助你解决问题,但会帮助你了解发生了什么。它还将向你展示情况的真实程度

您确定需要哪种编码吗?如果处理的是欧洲字符,则可能需要将输出显式编码为UTF-8或ISO 8859-1。

Java在读取无效unicode字符时的默认行为是将其替换为替换字符(\uFFFD)。此字符通常被渲染为问号


在您的例子中,您正在阅读的文本没有编码为unicode,而是编码为其他内容(如果您的文本是英文的,则Windows-1252或ISO-8859-1可能是最常见的选择)。

我编写了一个开源库,它有一个实用程序,可以将任何字符串转换为unicode序列,反之亦然。它有助于诊断此类问题。例如,要打印字符串,可以使用以下方法:

String str= StringUnicodeEncoderDecoder.decodeUnicodeSequenceToString("\\u0197" +
   StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence("Test"));

您可以在下面的段落中阅读有关该库的信息,以及在何处下载该库以及如何使用该库,请参见“字符串Unicode转换器”

哪些特定字符,以及如何打印?请分享一些代码。这可能是编码问题、字符数据处理问题或字体问题。这是一个人在没有真实信息的情况下所能说的全部。您使用的是非Unicode编码打印(Unicode拥有全部)。如果编码是ISO-8859-1(拉丁语-1),您可以尝试Windows-1252(Windows拉丁语-1,稍微多一点)<代码>新的OutputStreamWriter(outputStream,“Windows-1252”)。打印哪些字符以及在哪里?如果您试图将任意Unicode输出到Windows控制台,请立即放弃,它已无法解决。非常感谢。我更改了编码,现在代码工作正常。感谢您的文章,它提高了我的理解力。