Как преобразовать кодировку символов из CP932 в UTF-8 в javascript nodejs, используя модуль nodejs-iconv (или другое решение)

Я пытаюсь преобразовать строку из CP932 (также известного как Windows-31J) в utf8 в javascript. Обычно я просматриваю сайт, который игнорирует запрос utf-8 в заголовке запроса и возвращает текст в кодировке cp932 (хотя метатег html указывает, что страница - shift_jis).

В любом случае, у меня вся страница хранится в строковая переменная с названием «html». Оттуда я пытаюсь преобразовать его в utf8, используя этот код:

var Iconv = require('iconv').Iconv;
var conv = new Iconv('CP932', 'UTF-8//TRANSLIT//IGNORE');

var myBuffer = new Buffer(html.length * 3);
myBuffer.write(html, 0, 'utf8')
var utf8html = (conv.convert(myBuffer)).toString('utf8');

Результат не тот, который должен быть. Например, строка: "投稿 者 さ ん の 稚 内 全日空 ホ テ ル の ク チ コ ミ (感想 · 情報)" выходит как «ソ ス ソ ス ソ ス электронной ソ ス メ ゑ ソ ス ソ ス ソ ス ソ ス ソ ス ソ ス т ソ ス ソ ス ソ ス S ソ ス ソ ス ソ ス ソ ス ソ ス г ソ ス е ソ ス ソ ス ソ ス フ ク ソ ス` ソ ス R ソ ス ~ (ソ ス ソ ス ソ ス z ソ ス E ソ ス ソ ス ソ ス ソ ス) «

Если я удалю // TRANSLIT // IGNORE (что должно привести к тому, что он вернет похожие символы для отсутствующих символов, а в противном случае пропустите символы, не поддерживающие перекодировку), I получить эту ошибку: Ошибка: EILSEQ, недопустимая последовательность символов.

Я открыт для использования любого решения, которое может быть реализовано в nodejs, но мои результаты поиска не дали многих вариантов за пределами модуля nodejs-iconv.

nodejs-iconv ссылка: https://github.com/bnoordhuis/node-iconv

Спасибо!

Редактировать 24.06.2011: Я пошел дальше и реализовал решение на Java. Однако мне все равно было бы интересно найти решение этой проблемы с помощью javascript, если кто-нибудь сможет его решить.

6
задан hippietrail 7 January 2013 в 07:57
поделиться