【发布时间】:2019-11-23 02:47:10
【问题描述】:
我有一个字符串,我认为它包含一些 ISO-8859-1 十六进制字符代码
String doc = "#xC1;o thun b#xE9; g#xE1;i c#x1ED9;t d#xE2;y xanh bi#x1EC3;n"
我想把它改成这个,
Áo thun bé gái cột dây xanh biển
我试过这个方法,但没有运气
byte[] isoBytes = doc.getBytes("ISO-8859-1");
System.out.println(new String(isoBytes, "UTF-8"));
转换它的正确方法是什么?非常感谢您的帮助!
【问题讨论】:
-
那么你可以检查它是否正确转换...
-
什么是
#xC1;o?它是字面上的 6 个 Unicode 字符:哈希、x、C、1、分号、o?或者是你在这篇文章中的代表,比如一个值为 00C1 的角色?在后一种情况下应该没有问题:C1 在 Unicode 和 8859-1 中都是大写字母 A。 -
您的字符串由字符引用组成。没有简单的方法可以用纯 Java 解析那些。您需要一个库或编写自己的解析器。
-
嗯,它不是 ISO 8859-1,因为 #x1EC3;意味着 >255 个代码点。它看起来确实像 HTML 或 XML 十六进制数字字符实体引用,但缺少前导 &。在这种情况下,数字将是 Unicode 代码点。 (由于相似之处,您可能会将其与 ISO 8859-1 混淆。)这些数据来自哪里?格式是什么?
-
实际上,U+1EC3 是拉丁文小写字母 E,上面带有圆形和钩子。见UnicodeData.txt。
标签: java utf-8 iso-8859-1