3

在 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?decharacter

4

5 回答 5

3

这是一篇由 Joel Spolsky 撰写的关于该主题的精彩文章。它不会直接帮助您解决问题,但会帮助您了解正在发生的事情。它还将向您展示实际情况的复杂程度。

于 2013-09-26T20:49:49.827 回答
2

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

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

于 2013-09-26T20:46:16.063 回答
0

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

在您的情况下,您正在阅读的文本不是编码为 un​​icode,而是编码为其他内容(如果您的文本是英文,Windows-1252 或 ISO-8859-1 可能是最常见的替代方案)。

于 2013-09-26T23:52:01.097 回答
0

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

于 2013-09-26T20:51:35.310 回答
0

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

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

您可以在Open Source Java library with stack trace filtering、Silent String parsing Unicode converter 和 Version comparison阅读有关该库的信息以及在何处下载它以及如何使用它请参阅“字符串 Unicode 转换器”段落

于 2017-10-29T15:26:15.447 回答