Как преобразовать пользовательский кодированный файл в UTF-8 (на Java или с помощью специального инструмента) - PullRequest
6 голосов
/ 20 января 2011

Устаревшее программное обеспечение, которое я переписываю на Java, использует в качестве хранилища данных пользовательскую (аналогичную Win-1252) кодировку. Для новой системы, которую я собираю, я хотел бы заменить ее на UTF-8.

Так что мне нужно конвертировать эти файлы в UTF-8 для подачи в базу данных. Я знаю используемую карту персонажей, но она не одна из широко известных. Например. «A» находится в позиции 0x0041 (как в Win-1252), но в 0x0042 есть знак, который в UTF-8 появляется в позиции 0x0102, и так далее. Есть ли простой способ декодировать и конвертировать эти файлы с помощью Java?

Я уже прочитал много постов, но все они касались неких пользовательских кодировок промышленного стандарта. Я ожидаю, что можно создать пользовательский java.nio.ByteBuffer.CharsetDecoder или java.nio.charset.Charset, чтобы передать его java.io.InputStreamReader, как описано в первом ответе здесь ?

Любые предложения приветствуются.

1 Ответ

9 голосов
/ 20 января 2011

не нужно быть сложным.просто сделайте массив из 256 символов

static char[] map = { ... 'A', '\u0102', ... }

затем

read each byte b in source
    int index = (0xff) & b; // to make it unsigned
    char c = map[index];
    target.write( c );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...