我正在与 Oracle DB 进行交互,该数据库的编码有些混乱(根据数据库属性为 ASCII7,但实际上对韩语字符进行编码)。
当我从结果集中获取一些韩语字符串并查看字节时,结果发现它们与该文件完全对应(我通过谷歌搜索一些字节序列发现):http://211.115.85.9/files/raw3.txt http://211.115.85.9/files/raw3.txt
有点诡异,因为它似乎是互联网上唯一有关于这种特定编码的东西......
当使用 EditPlus3 查看该文件时,它显示了 3 列。
第一列是按字母顺序排列的韩语字符列表。第二个是我在查看从 Oracle DB 传递的 Java 字符串时发现的奇怪编码。第三个是UTF8。
我试图找出中间列的编码内容。有人能指出我正确的方向吗?
(我真的不想每次需要调用数据库时都必须实际读取该文件......)
它是 EUC-KR(或类似)编码数据,解释为另一种 1 字节编码(ISO-8859-1 或类似)并使用 UTF-8 进行编码。
换句话说:它是编码错误的数据,但可能是可以挽救的:
byte[] bytes = new byte[] { (byte) 0xc2, (byte) 0xb0, (byte) 0xc2, (byte) 0xa1 };
String str = new String(bytes, "UTF-8");
bytes = str.getBytes("ISO-8859-1");
str = new String(bytes, "EUC-KR");
System.out.println(str);
这会在我的系统上打印 œ 。
我发现了这个PDF文件 https://web.archive.org/web/20130909072935/http://brianhitchcock.net/Oracle_items_for_website/PDF/BookReview--NoCOUG200402--TheCaseoftheMissingKanji.pdf它更详细地解释了问题(以及它是如何发生的)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)