1. ホーム
  2. node.js

[解決済み] Nodejsで文字列をUTF-8に変換する。

2022-02-19 19:01:58

質問

DBから以下のような文字列を取得しました。

Johan Öbert

と言うべきものです。

Johan Öbert

このようにutf-8に変換してみました。

nameString.toString("utf8");

しかし、まだ同じ問題です。

何か思い当たることはありますか?

解決方法は?

を使用します。 utf8 モジュールでエンコード/デコードしてください。

インストールします。

npm install utf8

ブラウザで

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

Node.jsの場合。

const utf8 = require('utf8');

APIです。

エンコードする。

utf8.encode(string)

与えられたJavaScriptの文字列(string)を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'

デコードします。

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

リソース