Подтвердить что ты не робот

Nodejs преобразует строку в UTF-8

Из моей базы данных я получаю следующую строку:

Johan Öbert

Что нужно сказать:

Johan Öbert

Я попытался преобразовать его в utf-8 следующим образом:

nameString.toString("utf8");

Но все та же проблема.

Любые идеи?

4b9b3361

Ответ 1

Используйте модуль utf8 из npm для кодирования/декодирования строки.

Установка:

npm install utf8

В браузере:

<script src="utf8.js"></script>

В Node.js:

const utf8 = require('utf8');

API:

Encode:

utf8.encode(string)

Кодирует любую заданную строку (строку) JavaScript как UTF-8 и возвращает версию строки в кодировке UTF-8. Он выдает ошибку, если входная строка содержит нескалярное значение, то есть одиночную замену. (Если вам необходимо также иметь возможность кодировать нескалярные значения, используйте вместо этого WTF-8.)

// U+00A9 COPYRIGHT SIGN; see http://codepoints.net/U+00A9
utf8.encode('\xA9');
// → '\xC2\xA9'
// U+10001 LINEAR B SYLLABLE B038 E; see http://codepoints.net/U+10001
utf8.encode('\uD800\uDC01');
// → '\xF0\x90\x80\x81'

Decode:

utf8.decode(byteString)

Декодирует любую заданную строку в кодировке UTF-8 (byteString) как UTF-8 и возвращает версию строки в кодировке UTF-8. Выдает ошибку при обнаружении деформированного UTF-8. (Если вам нужно также иметь возможность декодировать закодированные нескалярные значения, используйте вместо этого WTF-8.)

utf8.decode('\xC2\xA9');
// → '\xA9'

utf8.decode('\xF0\x90\x80\x81');
// → '\uD800\uDC01'
// → U+10001 LINEAR B SYLLABLE B038 E

ресурсы

Ответ 2

У меня была та же проблема, когда я загрузил текстовый файл через fs.readFile(), я попытался установить кодирование в UTF8, он сохранил то же самое. теперь мое решение следующее:

myString = JSON.parse( JSON.stringify( myString ) )

после этого a... истинно интерпретируется как Ö.

Ответ 3

Если вы хотите изменить кодировку, вы всегда переходите от одного к другому. Таким образом, вы можете перейти от Mac Roman в UTF-8 или от ASCII до UTF-8.

Как важно знать желаемую кодировку вывода как текущую кодировку источника. Например, если у вас есть Mac Roman и вы декодируете его от UTF-16 до UTF-8, вы просто сделаете его искаженным.

Если вы хотите узнать больше о кодировке, эта статья будет подробно описана:

Что каждый программист абсолютно, положительно должен знать о кодировках и наборах символов для работы с текстом

npm pacakge encoding, который использует node-iconv или iconv-lite должно позволить вам легко указать, какую исходную и конечную кодировку вы хотите:

var resultBuffer = encoding.convert(nameString, 'ASCII', 'UTF-8');

Ответ 4

Вы также можете использовать класс буфера :

var someEncodedString = Buffer.from('someString', 'utf-8');

Ответ 5

У меня была та же проблема с JSON, просто используйте это:

JSON.parse(json or object)

Ответ 6

var utf8 = require("./utf8")

console.log(utf8.encode("NEAR DAGDI CHAWL"))

//utf8.js is not working properly