所以我正在编写一个程序,它将数据从网页提取到 Excel 工作表,然后将其打印到文本注释中。然而,我遇到的一个奇怪的问题是,从excel表格到文字注释,一个字符发生了变化。 - 变成了? 。我的解决方案是迭代这个单词,当它到达?并将其更改为 - 。我尝试过使用我在网上找到的 unicodes 并完成了
.replace("(question mark unicode) ", " - ")
无济于事。有谁知道它为什么这样做?您能确认 的 unicode 吗?和 - 。因此,如果单词是“Leo-III 1.3”,那么现在是“Leo?III 1.3”,谢谢您的帮助
最佳答案
?
是字符集编码问题的结果,可能出现在数据管道中的许多地方。
它实际上可能是在字符串的打印中,并且字符串本身是有效的。
要了解实际的字符值是什么,请尝试运行以下代码来打印字符串中找到的所有非 ASCII 字符的 Unicode 转义符:
public static void printNonAscii(String s) {
TreeSet<Character> nonAscii = new TreeSet<>();
for (char ch : s.replaceAll("[\r\n\\x20-\\x7E]", "").toCharArray())
nonAscii.add(ch);
for (char ch : nonAscii)
System.out.printf("\\u%04X %s%n", (int) ch, ch);
}
测试(UTF-8 格式的源代码)
printNonAscii("Foo ? \uFFFD ç ñ © ¼");
输出
\u00A9 ©
\u00BC ¼
\u00E7 ç
\u00F1 ñ
\uFFFD �
关于java - 奇怪的字符转换,需要帮助澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53549097/