java - 奇怪的字符转换,需要帮助澄清

标签 java unicode jsoup character jxl

所以我正在编写一个程序,它将数据从网页提取到 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/

相关文章:

android - 在 android 中使用 jsoup 获取 <article> 标签内的内容

java - 使用 JSoup 合并 Java 中的 HTML 文件

java - 使用 JSOUP 读取维基百科 "All Pages"特殊页面的标题

java - 可序列化是如何工作的?

java - 在ubuntu中实例化JAVA_HOME的各种方式有什么区别

java - 如何在Java中并行处理对象列表

java - java 如何允许用户输入

csv - 读取含有汉字的CSV文件[无法显示一个字符]

mysql - 无法输入 Unicode 数据、MySql、Express、M*EAN

mysql - 使用 utf8 的 MySQL 中列的字符串值不正确