JavaScriptにおける文字と文字コードの変換

JavaScriptにおける文字と文字コードの変換

JavaScriptにおける文字と文字コードの変換

JavaScriptでは、文字と文字コードを相互に変換する方法がいくつか存在します。これらの操作は、文字列操作、エンコーディング、または特殊文字の処理が必要な場合に非常に役立ちます。このページでは、JavaScriptでの文字と文字コードの変換方法について、例を交えながら詳しく解説します。

charCodeAtメソッドを使った文字コードの取得

JavaScriptでは、charCodeAt()メソッドを使用して文字列内の特定の文字のUTF-16コードポイントを取得できます。

基本的な使用例

let str = "こんにちは";
let code = str.charCodeAt(0); // 最初の文字 "こ" のコードポイントを取得
console.log(code); // 12371

文字列内のすべての文字コードを取得する

let str = "JavaScript";
for (let i = 0; i < str.length; i++) {
    console.log(str.charCodeAt(i));
}
// 出力: 74, 97, 118, 97, 83, 99, 114, 105, 112, 116

fromCharCodeメソッドを使った文字コードから文字への変換

String.fromCharCode()メソッドを使用すると、指定されたUTF-16コードポイントから文字を生成できます。

基本的な使用例

let char = String.fromCharCode(12371); // "こ"
console.log(char); // "こ"

複数のコードポイントから文字列を生成する

let str = String.fromCharCode(74, 97, 118, 97, 83, 99, 114, 105, 112, 116);
console.log(str); // "JavaScript"

encodeURIComponentとdecodeURIComponentを使ったエンコードとデコード

文字列をURLエンコードする場合は、encodeURIComponentdecodeURIComponentを使用します。これにより、特殊文字や日本語文字を安全にエンコードできます。

使用例

let text = "こんにちは";
let encoded = encodeURIComponent(text);
console.log(encoded); // %E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF

let decoded = decodeURIComponent(encoded);
console.log(decoded); // "こんにちは"

文字列をコードポイントとして扱う方法

JavaScriptでは、UTF-16コードポイントの代わりに、Unicodeコードポイントを扱うこともできます。これは、String.prototype.codePointAt()String.fromCodePoint()を使用することで可能です。

例: 絵文字の処理

let emoji = "😊";
console.log(emoji.codePointAt(0)); // 128522

let emojiFromCode = String.fromCodePoint(128522);
console.log(emojiFromCode); // "😊"

UTF-16とUTF-8の違いについて

JavaScriptでは内部的に文字列をUTF-16として管理しますが、外部とのデータのやり取りではUTF-8がよく使われます。これにより、文字のエンコーディングが異なる場合があります。

例: UTF-8エンコーディングの取得

function toUTF8Array(str) {
    let utf8 = [];
    for (let i = 0; i < str.length; i++) {
        let charcode = str.charCodeAt(i);
        if (charcode < 0x80) utf8.push(charcode);
        else if (charcode < 0x800) {
            utf8.push(0xc0 | (charcode >> 6));
            utf8.push(0x80 | (charcode & 0x3f));
        } else {
            utf8.push(0xe0 | (charcode >> 12));
            utf8.push(0x80 | ((charcode >> 6) & 0x3f));
            utf8.push(0x80 | (charcode & 0x3f));
        }
    }
    return utf8;
}

let utf8Array = toUTF8Array("こんにちは");
console.log(utf8Array);
// 出力: [227, 129, 147, 227, 129, 147, 227, 129, 171, 227, 129, 161, 227, 129, 175]

以上がJavaScriptにおける文字と文字コードの変換に関する詳細な解説です。適切なメソッドを選択することで、さまざまな場面での文字列操作が容易になります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です