Какая это кодировка символов? - PullRequest
2 голосов
/ 02 мая 2011

Я взаимодействую с БД Oracle, которая имеет некоторую испорченную кодировку (ASCII7 в соответствии со свойствами db, но на самом деле кодирует корейские символы).

Когда я получаю некоторые из корейских строк из resultSetи, глядя на байты, оказывается, что они точно соответствуют этому файлу (я нашел, прибегая к помощи некоторых из последовательностей байтов): http://211.115.85.9/files/raw3.txt

Какая-то жуткая, как кажется, ЕДИНСТВЕННАЯ вещь наИнтернет, в котором есть что-то об этой конкретной кодировке ...

Файл при просмотре с помощью EditPlus3 показывает мне 3 столбца.

Первый столбец представляет собой алфавитный список корейских символов.Второе - это странная кодировка, которую я нахожу при просмотре строк Java, переданных из БД Oracle.Третий - UTF8.

Я пытаюсь выяснить, во что закодирован средний столбец. Может ли кто-нибудь указать мне правильное направление?

(Я действительно не хочу на самом деле читать из этогофайл каждый раз, когда мне нужно вызвать БД ...)

Ответы [ 3 ]

5 голосов
/ 02 мая 2011

Это кодированные данные 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 , который более подробно объясняет проблему (и как она произошла).

0 голосов
/ 02 мая 2011

Я написал небольшой скрипт и расшифровал средний столбец первых двух строк методом грубой силы.

Следующие четыре результата - хангыль, но я не уверен, имеют ли они смысл:

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

Надеюсь, это помогло.Хорошего дня!:)

0 голосов
/ 02 мая 2011

Это кодировка UTF-8:

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

Я не знаю значения среднего столбца, но третий столбец представляет собой шестнадцатеричное представление хангыль в первом ряду.

Посмотрите файл в шестнадцатеричном редакторе, это может помочь.

Удачи! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...