JavaScriptにおける文字と文字コードの変換
JavaScriptにおける文字と文字コードの変換
JavaScriptでは、文字と文字コードを相互に変換する方法がいくつか存在します。これらの操作は、文字列操作、エンコーディング、または特殊文字の処理が必要な場合に非常に役立ちます。このページでは、JavaScriptでの文字と文字コードの変換方法について、例を交えながら詳しく解説します。
- charCodeAtメソッドを使った文字コードの取得
- fromCharCodeメソッドを使った文字コードから文字への変換
- encodeURIComponentとdecodeURIComponentを使ったエンコードとデコード
- 文字列をコードポイントとして扱う方法
- UTF-16とUTF-8の違いについて
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エンコードする場合は、encodeURIComponent
とdecodeURIComponent
を使用します。これにより、特殊文字や日本語文字を安全にエンコードできます。
使用例
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における文字と文字コードの変換に関する詳細な解説です。適切なメソッドを選択することで、さまざまな場面での文字列操作が容易になります。