カタバミさんのプログラミングノート

日曜プログラマーがプログラミング関係のメモを記録するブログです。

JavaScriptで文字列をUTF-8文字コードとして処理する方法

JavaScriptで文字列をUTF-8文字コードとして処理する方法のメモです。動作確認環境はWindows 10、Google Chrome 79.0.3945.130です。

文字列を16進数UTF-8文字コードに変換して半角スペースで区切る

const string1 = "あいうえお"
Array.from((new TextEncoder()).encode(string1), x => x.toString(16).padStart(2, '0')).join(' ')
// "e3 81 82 e3 81 84 e3 81 86 e3 81 88 e3 81 8a"

文字列を文字毎に10進数UTF-8文字コードに変換した二次元配列を作成する

const encoder= new TextEncoder()
const string1 = "あいうえお"
Array.from(string1, s => Array.from(encoder.encode(Array.from(s))))
// [227, 129, 130], [227, 129, 132], [227, 129, 134], [227, 129, 136], [227, 129, 138]

文字列を文字毎に16進数UTF-8文字コードに変換した二次元配列を作成する

const encoder= new TextEncoder()
const string1 = "あいうえお"
Array.from(string1, s => Array.from(encoder.encode(Array.from(s)), code => code.toString(16)))
// ["e3", "81", "82"], ["e3", "81", "84"], ["e3", "81", "86"], ["e3", "81", "88"], ["e3", "81", "8a"]

文字列を文字毎に16進数UTF-8文字コードに変換して半角スペースと改行で区切る

const encoder= new TextEncoder()
const string1 = "あいうえお"
Array.from(string1).map(s => Array.from(encoder.encode(Array.from(s))).map(code => code.toString(16)).padStart(2, "0").join(" ")).join("\r\n")
// "e3 81 82
// e3 81 84
// e3 81 86
// e3 81 88
// e3 81 8a"

備考

この投稿ではArray.from関数の第2引数mapFnを使用していますが、Array.from(...).map(mapFn)と記載しても同様の結果が得られます。