不可視文字検出器
任意のテキストを貼り付けると、検出器はその中に含まれるすべての不可視文字を報告します。これにはゼロ幅スペース、方向記号、BOM(バイト順マーク)、ソフトハイフン、改行なしスペース、そして空白のように見えながら検索・差分・コピー&ペーストを壊すUnicode制御コードポイントの一群が含まれます。各検出結果には、対応するコードポイント(U+200B)、公式なUnicode名称、および文字列内の位置が示されるため、除去する前に、正体不明の不具合がどこに潜んでいるかを正確に突き止められます。
不可視な文字をどのように検出するか
-
1
テキストを貼り付けてください
不審な文字列を入力してください、コードの断片、コピーされたメッセージ、設定値などです。
-
2
スキャンを実行します
このツールはすべてのコードポイントを走査し、目に見えない/書式に関する文字リストに一致するものをフラグとしてマークします。
-
3
レポートを確認します
各ヒットはその位置(インデックス1)、`U+HHHH`形式でのコードポイント、およびUnicode名(ゼロ幅スペース、BOMなど)を示しています。
-
4
テキストをクリーンにします
「置換」アクションを使用して不可視文字を削除または可視化し、その後、クリーンにしたバージョンを貼り付け直してください。
不可視な文字およびその出所
これらの文字は、正当な目的(テキストのレイアウト、書記方向、文字の組み合わせ)から存在しています。しかし、設計時の文脈から逸脱してコード、設定ファイル、検索クエリ、またはユーザー名に使用されると、バグとなることがあります。
検出器が探す文字
| コードポイント | 名前 | よく紛れ込む場所 |
|---|---|---|
U+200B |
ゼロ幅スペース | リッチテキストエディタ、ワードプロセッサ |
U+200C |
ゼロ幅非結合子 | ペルシャ語・ヒンディー語の組版 |
U+200D |
ゼロ幅結合子 | 絵文字シーケンス、インド系文字 |
U+200E |
左から右へのマーク | LTRとRTLの両方の文字を含むテキスト |
U+200F |
右から左へのマーク | 同上 |
U+202A..E |
埋め込み/上書き | 同上。悪意を持って使われることもある(Trojan Source) |
U+2028 |
行区切り | Wordからのコピー。JSONエンコーダを壊す |
U+2029 |
段落区切り | 同上 |
U+FEFF |
バイト順マーク | NotepadでUTF-8 with BOMとして保存したファイル |
U+00A0 |
改行なしスペース | Wordから来る組版用の空白 |
U+00AD |
ソフトハイフン | リッチテキストのハイフネーションのヒント |
不可視文字による不具合のよくある症状
- 「等しくなるはず」の文字列比較が等しくならない。 その値をこのツールにコピーし、バイト数を確認してください。
- 目視では一致するのにコードでは失敗する正規表現。 スペースになりすました
U+00A0であることが多いです。 - 貼り付けたペイロードでJSONパーサがクラッシュする。 たいていは先頭のBOM、またはJavaScriptがJSON内で拒否する文字列リテラル中の
U+2028です。 - SEOタイトルの長さがおかしい。 ゼロ幅スペースが、見た目を変えないまま上限を超えさせます。
Trojan Sourceという観点
双方向オーバーライド文字(U+202E、U+2066~U+2069)は、ソースコードをある順序で表示させながら別の順序でコンパイルさせることができます。これが「Trojan Source」と呼ばれる攻撃の一種です。信頼できない貢献者のコードをレビューするなら、マージ前にその差分をこの検出器に通してください。
よくある質問
Notepadやいくつかの古いWindowsツールでは、デフォルトで「UTF-8(BOM付き)」が設定されています。BOM(U+FEFF)はWindowsアプリには問題ありませんが、多くのシェルパイプライン、PHPファイル(BOMは<?phpタグの前に出力として再現される)、およびJSONパーサーでは動作が障害されます。
画面では通常のスペースのように見えるものの、実際には異なる動作を示します。改行が許されておらず、すべての言語におけるほとんどの\s regex変体とも一致しません。そのため、リッチテキストソースからコピーされたファイルパスやメールアドレス、ユーザー名などに頻繁に含まれてしまう傾向があります。
常にそうとは限りません。アラビア語、ペルシャ語、またはデヴァナガーリ文字のテキストでは、ゼロ幅接続記号および非接続記号が意味的に必須です。コード、設定情報、およびほとんどの英語テキストについては、自由に省略してください。自然言語コンテンツの場合は、省略前に検出機能を用いて確認してください。
いいえ、この分析は現在のリクエストに対して実行され、応答が生成された後でも貼り付けた内容は保存または記録されません。
関連ツール
以下記号(≤)
≤ 記号と関連する数学の比較記号をコピーできます。スプレッドシート、論文、ウェブページ向けに Unicode、HTML エンティティ、LaTeX 記法を掲載しています。
ディスレクシア対応テキスト変換ツール
貼り付けたテキストを短い段落と約72文字の行に整え直し、読みやすくします。結果をコピーして、あらゆる文書やメール、エディタに貼り付けられます。
コピーできる矢印記号
直線、二重線、斜め、折り返し、循環、三角形風のよく使うUnicode矢印をワンクリックでコピー。文書、チャット、デザインに使えます。
ドメイン名ジェネレーター
1つのキーワードからドメイン名の候補を生成します。接頭辞、接尾辞、文字の重ね、数字の末尾を、一般的な6つのTLDで組み合わせます。
アナグラムジェネレーター
短い語を入力すると、重複した並べ替えを除き、表示件数を調整しながら文字の一意な並べ替えを確認できます。
キャラクター名ジェネレーター
小説、ゲーム、RPGなどのキャラクター名を生成します。ファンタジー、SF、現代から選び、5〜30個の名前を設定すると、すぐに使える名前が手に入ります。
このツールは他の言語でも利用できます
- Detektor för osynliga tecken [SV]
- أداة كشف الأحرف غير المرئية [AR]
- Détecteur de caractères invisibles [FR]
- Detektor Karakter Tak Terlihat [ID]
- Unsichtbarer Zeichendetektor [DE]
- 보이지 않는 문자 탐지기 [KO]
- Detektor niewidzialnych znaków [PL]
- เครื่องตรวจจับตัวอักษรที่มองไม่เห็น [TH]
- Onzichtbare karakter detector [NL]
- Bộ phát hiện ký tự vô hình [VI]
- Detector de Caracteres Invisibles [ES]
- Detector de Caracteres Invisíveis [PT]
- Invisible Character Detector [EN]
- Rilevatore di Caratteri Invisibili [IT]
- Обнаружитель невидимых символов [RU]
- Görünmez Karakter Tespit Cihazı [TR]
- 不可见字符检测器 [ZH]