这是什么字符编码?

时间:2011-05-02 07:21:34

标签: utf-8 character-encoding

我正在与Oracle数据库连接,后者有一些混乱的编码(根据数据库属性的ASCII7,但实际上是对韩文字符进行编码)。

当我从resultSet中获取一些朝鲜语字符串并查看字节时,事实证明它们与此文件完全对应(我通过搜索一些字节序列找到):http://211.115.85.9/files/raw3.txt

有点怪异,因为它似乎是互联网上唯一有关于这种特殊编码的东西......

使用EditPlus3查看该文件时,显示3列。

第一列是韩文字符的字母顺序列表。第二个是我从查看从Oracle DB传递的Java字符串中发现的奇怪编码。第三个是UTF8。

我正在试图找出编辑中间列的内容。有人能指出我正确的方向吗?

(每次我需要调用数据库时,我真的不想实际读取此文件...)

3 个答案:

答案 0 :(得分:5)

它是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);

这会在我的系统上打印가。

我发现this PDF file更详细地解释了问题(以及它是如何发生的)。

答案 1 :(得分:0)

是UTF-8编码:

가 c2b0c2a1 eab080
각 c2b0c2a2 eab081
간 c2b0c2a3 eab084
갇 c2b0c2a4 eab087
...

我不知道中间列的含义,但第三列是第一行中Hangul的十六进制表示。

使用十六进制编辑器观察文件,这可能会有所帮助。

祝你好运! :)

答案 2 :(得分:0)

我写了一个小脚本并解码了前两行蛮力的中间栏。

以下四个结果是韩语,但我不确定,如果它们有意义:

utf_16_be => 슰슡 슰슢
johab => 춿춰 춿춱
euc_kr => 째징 째짖
cp949 => 째징 째짖

我希望有所帮助。祝你今天愉快! :)