不可視文字削除ツール
ゼロ幅スペース、BOM、ソフトハイフン、双方向制御文字、ノーブレークスペースを検出して削除します。削除した内容を表で表示。データは送信されません。
すべてブラウザ内で実行されます。データがアップロードされることはありません。
不可視文字の削除とは?
目には見えないのに、コード、検索、URL、データのインポートを壊す文字を検出して削除します。ゼロ幅スペースと結合子、バイトオーダーマーク(BOM)、ソフトハイフン、双方向制御文字(「Trojan Source」の手口で使われる RLO を含む)、その他の Unicode の書式文字が対象です。NBSP などの特殊な空白は通常のスペースに変換でき、削除したすべての文字がコードポイントと件数つきで表に一覧されます。
不可視文字の削除の使い方
- 疑わしいテキストを入力欄に貼り付けます。
- オプションを確認します。特殊な空白の置換、絵文字内の結合文字の保持、制御文字の削除です。
- きれいになったテキストを出力からコピーします。
- 表で、どんな隠し文字が見つかったかを確認します。
例
ab c
ab c
削除:U+00A0 NO-BREAK SPACE(スペースに置換)、U+200B ZERO WIDTH SPACE、U+FEFF ZERO WIDTH NO-BREAK SPACE(BOM)
不可視文字の削除を使うべき場面
コードが「unexpected character」で失敗するとき、同じに見える2つの文字列が一致しないとき、CSV の見出しに BOM が付いているとき、コピーしたテキストに隠れた追跡用の文字が含まれているときに使えます。ZWJ/ZWNJ を削除すると、ペルシア語、ヒンディー語、マラヤーラム語など、それらを意図的に使う文字体系の表示が変わることがあるため、それらの言語では結果を使う前に表を確認してください。
不可視文字の削除の仕組み
すべてのコードポイントを、既知の不可視文字のリスト(U+200B–U+200F、U+202A–U+202E、U+2060–U+2064、U+2066–U+206F、U+FEFF、U+00AD、U+180E、ハングルのフィラーなど)と、Unicode のカテゴリ Cf(書式文字)に照らして確認します。一致したものは削除して数えます。特殊な空白(U+00A0、U+2000–U+200A、U+202F、U+205F、U+3000)は、そのオプションがオンのとき U+0020 に置き換えられます。「絵文字内の結合文字を残す」では、2つの絵文字の間の U+200D と絵文字のタグ文字が保持されるため、👩💻 のような並びが崩れません。タブ、改行、復帰以外の制御文字も削除できます。
一般的な使用例
- 貼り付けたゼロ幅スペースが原因で失敗するコードや JSON を直す
- CSV の最初の見出しから BOM を取り除く
- ソースコードレビューで双方向の上書き文字を検出する
- Web サイト、PDF、チャットアプリからコピーしたテキストを整理する
- 文字列を比較する前にノーブレークスペースを正規化する
セキュリティ注意事項
隠れた双方向制御文字やゼロ幅文字は、ホモグラフ攻撃や「Trojan Source」攻撃で、コードやリンクを実際とは違って見せるために使われます。削除の表で、それらを確認できます。処理はお使いのブラウザ内でのみ行われます。
よくある質問
ゼロ幅スペースとは何ですか?
U+200B は幅のない文字で、改行できる位置を示します。目には見えませんが、文字列を不一致にし、コードや URL を壊すことがあります。
絵文字は壊れませんか?
絵文字内の結合文字を残すがオン(初期設定)なら壊れません。👩💻 のような絵文字や国旗の並びは隠れた結合子とタグ文字に依存しているため、保持されます。
双方向制御文字とは何ですか?
U+202E RIGHT-TO-LEFT OVERRIDE のような文字は、テキストの表示方向を変えます。右から左に書くテキストでは正当に使われますが、コードやファイル名を偽装するために使われることもあります。
ノーブレークスペースは不可視ですか?
通常のスペースのように見えますが、検索や比較での動作が異なります。ノーブレークスペースなど特殊な空白を通常のスペースに置換がオンのとき、通常のスペースに置き換えます。