一致するはずの検索が一致しない
手で一節を打っても検索エンジンは何も見つけないのに、テキストは明らかにページ上にあります。2つの文字列は、見えない1文字だけで違っています。
コピー&ペースト · 文字リファレンス
見えないハイフン(U+00AD)をワンクリックでコピーし — そして何より、PDFから貼り付けたテキストが検索・検証・インポートを拒む理由を理解するために役立ててください。
ボックスをクリックして文字を選択し、Ctrl + C(Mac は ⌘ + C)を押します。
ソフトハイフン(U+00AD、HTMLでは ­ と書く)は、見えないように設計された唯一のハイフンです。行の折り返しが必要になったとき単語をどこで分けてよいかをレンダラーに伝える — 読むための文字ではなく、組版上のヒントです。その地点で折り返しが起これば行末に本当のハイフンが現れ、起きなければ文字はまったく目に見える空間を占有しません。新聞・書籍・長文組版はこの発想を1世紀使っており、Unicodeはファイルがテキストとともにヒントを運べるようコードポイントを与えました。
ウェブとデータの世界では、この不可視性こそが問題です。ソフトハイフンはスペースではないので奇妙な隙間として現れず、ハイフンでもないので「-」の検索では見つからず、対応するキーが存在しないので検索置換ボックスに入力できません。PDFからコピーしたテキストが古典的な供給源です。PDF生成器は改行を制御するため単語の中に任意ハイフンを散らばらせ、コピーするとそれらが一緒についてきます。だからPDFから貼り付けた一節が、手で打った同じ一節と一致しないことがあるのです。ワープロからデータベースの欄、スプレッドシートのセル、検索ボックスへ移ったテキストにも同じことが起こります。
被害は具体的で、見過ごしやすいものです。「information」を含む検索インデックスは「information」というクエリに一致しません。非ASCIIバイトを拒むユーザー名バリデータは、ユーザーが見えなくてもソフトハイフンを拒みます。文字数カウントはそれを数えます。コードエディターは文字列中の不正な文字として旗を掲げ、時には何も悪く見えない桁を指すエラーメッセージを出します。解決は文字の除去です。このサイトのハイフン除去ツールは U+00AD をコードポイントで照合し、残されたスペースの後始末もして削除します。どのキーボードも作れない文字を取り除くには、これが唯一の確実な方法です。
すべてのプラットフォームのキーボードショートカット。入力せずに上のカードからコピーもできます。
| プラットフォーム | ショートカット |
|---|---|
| Word(Windows・Mac共通) | Ctrl + - で単語内に任意(ソフト)ハイフンを挿入 |
| Google Docs | 挿入 → 特殊文字 →「soft hyphen」を検索 |
| Windows(すべてのアプリ) | テンキーで Alt + 173 |
| HTML | ­ または ­ — 名前付き実体を持つ唯一のハイフン変種 |
| Mac | ショートカットなし・表示なし — 上でコピー、または絵文字と記号 |
| Word(表示) | ホーム → ¶ 編集記号の表示/非表示でテキスト中に表示 |
文字が本来の役割を果たしている例と、別のダッシュに置き換えたときの変化。
exam¬ple(行が必要になるまで見えない)
infor¬mation retrieval
cus¬tomer_id
https://dash¬remover.com
テキストに不可視ハイフンが潜んでいることを示す4つの症状と、それぞれへの対処です。このページではソフトハイフンを¬として描画しています — 表示できない文字に対してUnicodeが推奨する代替記号です。
手で一節を打っても検索エンジンは何も見つけないのに、テキストは明らかにページ上にあります。2つの文字列は、見えない1文字だけで違っています。
ユーザー名、メールのローカル部、スラッグが拒否されるのに、目に見える文字はすべて合法です — 見えない1文字が合法ではないのです。
矢印キーで1文字を越えるのに2押しが必要になったり、コードエディターが空に見える桁に予期しない文字があると報告したりします。
文字数がテキストの見た目より多い、または長さ上限つきのデータベース欄が、目では収まる文字列を拒否します。
これらの診断は、いくら見つめても確定しません — この文字は見えないように設計されているからです。コードポイントで確定してください。行をダッシュ識別ツールに貼り付ければ見つかったソフトハイフンを報告し、その後テキストをハイフン除去ツールできれいにします。
似ているのに挙動が決して同じではない 3 つの文字。必要なものをコピーするか、各文字の詳細なリファレンスをお読みください。