Как получить и fs.writeFile веб-страницу с кодировкой SJIS / Shift_JIS - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь получить страницу из Интернета и сохранить ее в HTML-файле.На странице есть это в заголовке:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" >
<head>
<meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS" />
</head>

Независимо от того, что я пытаюсь, сохраненная HTML-страница выглядит ужасно, и я просто не могу заставить ее правильно сохранить японские символы.

Я использую node-fetch, fs.writeFile и модуль с именем jconv .Я перепробовал все комбинации, но ничего не работает.Прямо сейчас код должен конвертировать из SJIS в UTF-8, затем fs должен записать файл с кодировкой UTF-8.

fetch(link).
then((res) => {
    if (res.ok) {
        return res.text();
    }
    console.log("Invalid data");
}).
then((body) => {
    // this is supposed to convert from SJIS to UTF-8
    var buf = jconv.convert(body, 'SJIS', 'UTF-8');

    // save file
    fs.writeFile(path, buf, 'UTF-8', (err) => {
        if (!err) {
            console.log('Saved');
        }
    });
});

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

1 Ответ

1 голос
/ 09 апреля 2019

Линия:

<meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS" />

также должен быть изменен на:

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />

чтобы информация о кодировке в заголовке соответствовала новой кодировке.

...