文字コード・バイト列ビューア

English version

一致しないキー、1文字だけ長いセリフ、同じに見えるのに別物の値。そうした文字列を貼り付けると、各文字のコードポイント、4種類の文字コードでのバイト列、そして見えない文字や紛らわしい文字への注記を一覧にします。

例を試す:

ブラウザ内で処理します。テキストはどこにも送信されません。

  • 全文字のUnicodeコードポイント(U+XXXX)と、UTF-8・UTF-16LE・Shift_JIS(CP932)・EUC-JPでのバイト列
  • 4種類の長さを並べて表示: 見た目の文字数・コードポイント数・UTF-16単位(JavaScript / C#のlength)・バイト数
  • ASCIIに見えて一致しない全角のかっこ・カンマ・パーセント・数字
  • 全角スペース、ノーブレークスペース、ゼロ幅スペース・結合子、BOM、ソフトハイフン
  • 絵文字など、UTF-16で2単位になる文字(JavaScriptやC#で2文字と数えられるもの)
  • Shift_JISやEUC-JPに存在しない文字。「?」に化ける前に印を付けます

同じ文字列に4つの長さがある理由

文字列の長さは一つではありません。JavaScript・C#・JavaはUTF-16単位で数えるので、絵文字1つが2、結合子でつながった家族の絵文字は11になります。Python 3・Rust・Swiftはコードポイントで数え、絵文字は1、家族は7です。データベースの列幅や通信のサイズ制限はバイトで数え、UTF-8の絵文字は4バイト、Shift_JISには絵文字そのものがありません。そしてプレイヤーが見るのは書記素、つまり家族1つです。「最大20文字」という決まりは層ごとに意味が変わるので、このページは4つの数を並べて、どの意味なのかを決められるようにしています。

同じに見えて別物の文字

日本語入力は既定で全角の記号を出します。( ではなく(、% ではなく%、012ではなく012、半角スペースのつもりで全角スペース(U+3000)。どれもASCIIの双子とそっくりに表示され、どれとも一致しません。{count}と書かれたプレースホルダーがそのままプレイヤーに見えてしまうのも、末尾に全角スペースの付いたキーがいつまでも解決しないのも、これが原因です。文書からのコピー&ペーストは見えない文字を持ち込みます。Webページ由来のノーブレークスペース、リッチテキストエディタ由来のゼロ幅スペース、ファイルから来た値の先頭に付いたBOM。表ではこれらをすべて強調するので、本当に違っている文字がどれかがその場で分かります。

バイト列の列の読み方

16進のバイト列は、その文字コードで保存したファイルにその文字がどう入るかです。「—」はその文字コードに符号がないという意味で、その文字コードで保存すると「?」に置き換わります。Shift_JISへの書き出しでWindows拡張の①や㈱、絵文字が黙って消えるのはこれです。UTF-8の列と、手元のファイルの16進ダンプの同じ位置を見比べれば、そのファイルが名前の主張どおりではなく実際に何であるかを確認できます。

翻訳ファイルを丸ごと、更新のたびにチェックするなら

Loclint はプロジェクト単位で CSV / JSON を預かり、変数・タグ・訳し忘れ・原文のまま・文字数・key の重複の検査に AI レビューを加え、前回からの新規・解消・再発を追跡します。無料プランはカード登録不要です。

関連記事

ほかの無料ツール

無料ツール一覧