onlinetools.dev

Unicode文字インスペクター

各文字のコードポイント、UTF-8/UTF-16 バイト、エスケープ表記を表示

ローカル実行
loading…
このツールについて

任意のテキストを貼り付けると、各文字が解剖されます。コードポイント(U+XXXX)、UTF-8 バイト、UTF-16 ユニット、JavaScript エスケープシーケンス、HTML エンティティ、一般カテゴリ — さらに、コードポイント数、UTF-16 ユニット数、UTF-8 バイト数、ユーザーが知覚する文字数(書記素クラスタ)の合計も表示します。

これは「この文字列、なんか変?」という瞬間のためのツールです。不可視文字(ゼロ幅スペース、BOM、方向マーク)は目に見える行として現れます。そっくりな文字(キリル文字の а とラテン文字の a)は異なるコードポイントを露わにします。そして「1 文字のはず」の絵文字が、実はゼロ幅接合子でつながれた 7 つのコードポイントだったと判明します。

4 種類の長さの合計は、あの永遠の疑問に答えます。なぜ JavaScript の .length と、データベースのバイト制限と、ユーザーの目に映る長さは、文字列の長さについていつも食い違うのか。

よくある質問

なぜ JavaScript では "🎉".length === 2 なのですか?
JavaScript の文字列は UTF-16 コードユニットで数えます。U+FFFF を超える文字 — ほとんどの絵文字を含む — はサロゲートペア、つまり 2 ユニットが必要です。インスペクターは両方のユニットと本当のコードポイントを表示し、サマリーでは別々に数えます。
書記素クラスタとは何ですか?
読み手が 1 文字として知覚するものです。é は 2 つのコードポイント(e + 結合アクセント)であり得ますし、家族の絵文字はゼロ幅接合子でつながれた 7 つ以上のコードポイントであり得ます。書記素のカウントにはブラウザーの Intl.Segmenter を使用しています — 「ユーザーの目に映る文字」に最も近いものです。
文字列内の不可視文字はどうやって見つけますか?
ここに貼り付けてください — すべてのコードポイントが 1 行ずつ表示されます。ゼロ幅スペース(U+200B)、ノーブレークスペース(U+00A0)、BOM(U+FEFF)、方向マークも含まれ、それぞれカテゴリのラベルが付きます。これらは「同一に見える」文字列が等価比較に失敗する古典的な犯人です。
UTF-8 バイトシーケンスから何が分かりますか?
保存または転送される正確な内容です。ASCII は 1 バイト、ラテン拡張の多くは 2 バイト、CJK は 3 バイト、絵文字は 4 バイトです。システムがシーケンスの途中で切り詰めると置換文字(�)が現れます — バイトビューは、そうした切断がどこに落ちるかを示します。
関連ツール