Unicode エンコード変換ツール
テキストとUnicodeエンコードの相互変換、複数フォーマット出力対応
文字コードポイント詳細(クリックでコピー)
Unicodeとは?
Unicode(ユニコード)は、コンピュータ科学分野の業界標準であり、世界の大部分の文字体系を整理・エンコードしています。各Unicode文字には一意の番号が割り当てられ、コードポイント(Code Point)と呼ばれ、通常16進数でU+プレフィックス付きで表記します(例:U+4E2Dは漢字「中」を表す)。Unicodeエンコード変換ツールは、テキストをさまざまなUnicode表現形式に変換したり、Unicodeエンコードをテキストに戻したりすることができます。
使い方
手順
- 変換するテキストを入力欄に入力または貼り付けてください
- 変換方向を選択してください:テキストからUnicode、Unicodeからテキスト
- 出力形式を選択してください:\uXXXXまたはU+XXXX(エンコード時に利用可能)
- 結果は自動表示され、ワンクリックでコピーや入力/出力の入れ替えが可能です
エンコード時の注意点
- Unicodeエスケープ形式はコードやデバッグに便利ですが、通常の文章では可読性が低下する可能性があります。
- デコード時はサロゲートペアと絵文字の出力を確認してください。ペアを分割すると文字化けが発生する可能性があります。
利用シーン
仕組み
Unicode標準(ISO/IEC 10646)は、17のプレーン(U+0000〜U+10FFFF)にわたり、すべての文字に一意の数値コードポイントを割り当てています。基本多言語プレーン(BMP、プレーン0)はU+0000〜U+FFFFをカバーし、CJK統合漢字を含むほぼすべての現代の書記体系を収録しています。補助プレーン(1〜16)には歴史的な文字体系、希少CJK、絵文字、特殊用途の文字が含まれます。本ツールは、人間が読めるテキストと2つの機械向け表現(JavaScriptスタイルの\uXXXXエスケープシーケンスと標準のU+XXXX表記)を相互変換します。 UTF-16はJavaScript文字列の内部エンコーディングであり、BMP文字はコードポイントと等しい単一の16ビットコードユニットとして格納され、補助文字(U+10000以上)はサロゲートペアとしてエンコードされます。具体的には、コードポイントから0x10000を引いた20ビットの値を、上位サロゲート(0xD800 + ((cp - 0x10000) >> 10))と下位サロゲート(0xDC00 + ((cp - 0x10000) & 0x3FF))の10ビットずつに分割します。本ツールのエンコードモードではString.prototype.codePointAt()を用いて補助コードポイントを検出し、\uXXXX形式では正しい2つの\uエスケープを生成します。U+XXXX形式では完全なコードポイントが直接表示されます。 デコードモードは3つの構文を解析します:\uXXXX(4桁の16進数、BMPのみ)、\u{XXXXX}(ES6の波括弧構文、Unicode全体に対応)、U+XXXX(可変長16進数の標準表記)。正規表現 /\\u\{([0-9a-fA-F]+)\}/g が波括弧エスケープを処理してString.fromCodePoint()に渡し、/\\u([0-9a-fA-F]{4})/g が従来のエスケープをString.fromCharCode()で処理します。この2つのパターンを組み合わせることで、補助文字が2つの\uエスケープとしてエンコードされていた場合もサロゲートペアを正しく再構築できます。 UTF-8エンコーディングはバイト長に影響します。BMP文字「中」(U+4E2D)は3バイト(E4 B8 AD)ですが、絵文字「😀」(U+1F600)は4バイト(F0 9F 98 80)を必要とします。本ツールの文字カウンターはコードポイント数とUTF-16コードユニット数を区別し、データベースやAPI、フォームフィールドでコードユニット単位の長さ制限をデバッグする際に有用な差異を可視化します。
- コードポイントイテレーション:String.prototype.codePointAt(pos)は補助文字に対して完全なコードポイントを正しく返します。charCodeAt()は上位サロゲートのみを返すのとは異なり、本ツールではスプレッド演算子 [...str] を使用してコードポイント単位でイテレーションしています。これは内部的に文字列イテレータプロトコルを呼び出します。
- サロゲートペアの計算:補助コードポイント CP > 0xFFFF の場合、上位サロゲートは Math.floor((CP - 0x10000) / 0x400) + 0xD800、下位サロゲートは ((CP - 0x10000) % 0x400) + 0xDC00 で求められます。エンコードモードではこの式を適用して有効な \uD800\uDC00 ペアを生成します。
- デコード用正規表現パイプライン:3つのパターンを順次実行します。\u{XXXXX}(ES6波括弧)→ \uXXXX(4桁16進数)→ U+XXXX(標準表記)の順で、fromCodePoint()が波括弧とU+パスを処理し、fromCharCode()が従来の4桁パスを処理します。
- UTF-8バイト構造:BMP文字は1〜3バイト(ASCII=1バイト、ラテン補助=2バイト、CJK=3バイト)、補助文字は11110xxx 10xxxxxx 10xxxxxx 10xxxxxx パターンの4バイトを使用します。ツールのバイトカウンターは new Blob([str]).size を使用して正確に計測します。
- コードポイントとコードユニットの違い:1つの表示文字が複数のコードポイントを占める場合があります(例:éはU+00E9またはU+0065 + U+0301の結合アクセント)。本ツールはcharCount(UTF-16コードユニット)とcodepointCount(Unicodeスカラー値)の両方を報告し、この差異を可視化します。
- Unicodeプレーンの概要:プレーン0(BMP)=現代の書記体系、プレーン1(SMP)=歴史的文字+絵文字+数学記号、プレーン2(SIP)=希少CJK、プレーン14(SSP)=タグ+異体セレクタ、プレーン15〜16=私用領域。エンコードモードはcodePointAt()を介してすべてのプレーンを正しく処理します。
- \uとU+表記の違い:\uXXXXはJavaScript/Java/Cのエスケープシーケンス(波括弧なしではBMPのみ対応)、U+XXXXはUnicodeコンソーシアムの正規表記(最低4桁の16進数、上限なし)。ツールのフォーマット切替でこれらの表現を切り替えられます。
使用例
中国語から Unicode エスケープ
入力: 你好世界(CJK 4文字、UTF-8 で12バイト)
出力: \u4f60\u597d\u4e16\u754c
注意: BMP 内のコードポイントのみ。JSON 文字列、JavaScript リテラル、ログファイルで有用絵文字からサロゲートペアエスケープへ
入力: 😀🎉(絵文字2つ、いずれも U+FFFF を超える)
出力: \uD83D\uDE00\uD83C\uDF89
注意: BMP 外の文字は UTF-16 サロゲートペアとしてエンコードされる。古い JS エンジンで往復変換するには String.fromCodePoint が必要Unicode エスケープのデコード
入力: \u4e2d\u6587\u6d4b\u8bd5
出力: 中文测试
注意: エスケープされた文字列を貼り付けると、ツールがエンコードを反転する。CJK ペイロードのデバッグでは出力バイトがソースと一致するか確認よくある質問
このツールは各文字について何を表示しますか?
コードポイント(10進数と16進数)、ブロック名(例:Basic Latin、CJK Unified Ideographs)、カテゴリ(文字、数字、記号、句読点など)、Unicode名、加えてUTF-8 / UTF-16 / UTF-32のバイト表現です。エンコーディングのバグデバッグや、適切な文字を選ぶのに役立ちます。
UTF-8、UTF-16、UTF-32の違いは何ですか?
3つとも同じUnicode文字をエンコードします。UTF-8はコードポイントあたり1〜4バイトを使用し、ASCIIとバイト互換です(Webの主流エンコーディング)。UTF-16は2または4バイトを使用します(JavaScriptとWindowsで内部的に使用)。UTF-32は常に4バイトを使用します(ネットワーク上ではほとんど見かけず、メモリ内で一般的)。
なぜ「𝓗」が2つのUTF-16コードユニットとして表示されるのですか?
U+FFFFを超えるコードポイント(基本多言語面の外)は、UTF-16では「サロゲートペア」(2つの16ビット半分)としてエンコードされます。JavaScriptのstring.lengthはこれを2としてカウントしますが、Array.from(str)は1つとして扱います。本ページは両方のビューを表示するので、長さカウントの予期せぬ動作をデバッグできます。
正規化形式(NFC/NFD/NFKC/NFKD)とは何ですか?
Unicodeでは、同じ表示テキストに複数の表現が許されます。éは1つのコードポイント(U+00E9)でも、e + 結合用アクサンテギュ(U+0065 U+0301)でも表せます。NFCは合成し、NFDは分解します。NFKC/NFKDはさらに互換文字を畳み込みます(½ → 1/2)。文字列比較やハッシュ化の前には必ず正規化してください。
なぜ絵文字が時々四角く表示されるのですか?
ブラウザのフォントにそのグリフがないからです。最新の絵文字はZWJシーケンス(例:👨👩👧 = 男性 + ZWJ + 女性 + ZWJ + 女の子)を使用し、1つの画像としてレンダリングするには特定のフォントが必要です。古いフォントでは3つの個別の絵文字または四角が表示されます。
名前で文字を検索するにはどうすればよいですか?
検索ボックスに名前(または一部)を入力してください。名前は公式Unicode名リストに従います(LATIN SMALL LETTER A、GREEK CAPITAL LETTER OMEGA、MUSICAL SYMBOL G CLEF)。一般的な絵文字には本ページが認識する「CLDRショートネーム」もあります。
入力はアップロードされますか?
いいえ。検索はブラウザ内のUnicodeデータベースを使用します。何もアップロードされません。