このツールについて
テキストには、画面上で幅を取らないのに意味を変えてしまう文字が潜んでいることがあります。検索を外すゼロ幅スペース、コードの見た目とコンパイル結果を食い違わせる右から左への上書き、言語モデルにしか読めない命令を綴った Unicode タグ文字の列、ラテン文字の単語に紛れ込んだキリル文字の а でリンク先が別の場所になる、といったものです。テキストを貼るか、最大 20 MiB のテキストファイルを置いてください。文字コードは自動判定します。疑わしい文字はその場所に ZWSP、RLO、TAG a のようなバッジで表示され、コードポイント、Unicode の名前、分類が付きます。送信はせず、解析はこのタブの中で行います。
印を付けるもの
双方向制御文字。U+202A から U+202E、U+2066 から U+2069、それに LRM、RLM、ALM。Trojan Source 攻撃の仕組みで、画面でレビューしたコードとコンパイラが読むコードが別物になります。ゼロ幅文字:U+200B ZWSP、U+200C ZWNJ、U+200D ZWJ、U+2060 WJ、U+FEFF。Unicode タグ文字 U+E0000 から U+E007F は、隠している ASCII に戻して表示します。プロンプトインジェクションで LLM への命令を忍ばせる既知の手口です。変わった空白:NBSP、thin/narrow スペース、全角スペース U+3000。異体字セレクタは、連続して並ぶと隠しデータの可能性があります。ソフトハイフンなどの書式文字、制御文字、私用領域のコードポイント。そして同形字(ホモグリフ):ラテン文字の単語にキリル文字やギリシャ文字が混ざったもの、たとえばキリル文字の р と а で綴った paypal。Unicode UTS #39 の confusables データを使い、複数の文字体系が混ざった単語として見つけます。三つのモード(文章、コード、URL またはユーザー名)が変えるのは表示する深刻度だけで、検出内容は変わりません。
正当な使い方として扱うもの
ゼロ幅文字がすべて攻撃というわけではありません。絵文字の ZWJ シーケンス(家族や職業の絵文字)、国旗のタグシーケンス、絵文字表示セレクタ、ペルシア語やインド系文字の中の ZWNJ と ZWJ、日本語や中国語の全角スペース、先頭の BOM は、警告ではなく情報として表示します。「削除」は既定で Bidi、タグ、ゼロ幅の文字を取り除きますが、こうした正当な使い方はそのまま残します。同形字は、一語ずつあなたが確認した単語だけ置き換えます。ギリシャ語の文の中のギリシャ語の単語は偽物ではないからです。結果はコピーするか、ファイルとして保存できます。
限界
これらの文字が見つかっても AI が書いた文章だとは言えませんし、見つからなくても AI が書いていないとは言えません。「ChatGPT の透かし文字」と言われるものの多くは、ノーブレークスペース、狭いスペース、ダッシュといったごく普通の組版で、ワープロやウェブページが何十年も前から入れてきたものです。同形字の検査は文字体系の混在しか見ません。単語全体をキリル文字で綴ったものは、検査にとっては正しいキリル文字の単語です。正当な使い方かどうかの判定は、どちらの方向にも間違えることがあります。フォントの段階で起きる混同、たとえば小文字の l と大文字の I が同じに見えるフォントの問題は Unicode の話ではなく、ここでは検出しません。