web-dev-qa-db-ja.com

テキストエディターで余分な非表示の文字を削除する方法

テキストエディターに2つの「同一の」5文字の文字列があります(Sublime Text2 | Notepad ++)。

最初の文字列はGmailからコピーされ、2番目の文字列は手で入力しただけです。

最初の文字列を選択すると、6文字が選択されています。 2番目の文字列を選択すると、5文字が選択されています。

enter image description here

Sublime Text2で両方の文字列を同時に選択すると、最初の文字列の後に余分なスペースが選択されていることがわかります。

enter image description here

Notepad ++で「すべての文字を表示」を有効にしましたが、最初の文字列と2番目の文字列の間で明らかに異なるものは何も表示されません。

ファイルはUTF-8エンコーディングを使用します。また、この問題は両方のテキストエディタで一貫しています。

誰かが見えない余分な文字を削除する方法とそれがどこから来たのかアドバイスしてくれる?

5
BustedSanta

取得したANSI文字列gffk9​に基づいて、テキストに存在する追加の文字は ゼロ幅スペース のようです。ゼロ幅スペースは、テキストに実際にスペースが含まれていない場合に、テキストを表示するプログラムが行を「安全に」改行できる場所を示すために使用されます。 Gmailからコピーしたため、HTMLを使用してテキストをフォーマットしたメールから送信された可能性があります。

余分な文字を削除する方法は、システムによって異なります。 この16進ビューアプラグイン Sublime Textはいくつかの検索機能を提供するので有望に見えますが、16進文字列または置換による検索については明示的に言及されていません。 Notepad ++を使用しているので、Windowsを使用していると思います。 XVI32 を使用すると、ファイル内の16進文字列を検索して置換できます。

参考までに、Unixのような環境の場合、sedを使用すると、ファイル内の16進文字列を この投稿で説明されているプロセス を使用して置き換えることができます。

いずれの場合でも、検索して置換しようとしている16進文字列はE2 80 8Bになります。

3
fakedad

これは、16進エディタを使用せずに崇高な3で私のために働きました。
通常の検索と置換を使用しています。

  • 置換ダイアログを開く(Ctr + H)
  • 'Find What'にUnicode char U200Bを入力します(*ヒントは以下を参照)
  • 「置換」を空のままにします
  • すべて置換

/ *そもそもそこにUnicode文字を取得するには、OSのメソッドを使用します。

  • Windows-Altキーを押しながらUnicodeコードを入力
  • Linux-Ctrl + Shift + u、CtrlキーとShiftキーを離さずにコードを入力
  • Linuxでの崇高さ-Ctrl + Alt + Shift以外はLinuxと同じです。 (崇高な3はCtrl + Shift + uを「ソフトREDO」にバインドします)

また、charが崇高な場所にあることがわかっている場合は、shift +矢印を使用して選択できます。カーソルが移動しないため、それがわかったので、少し太くなります:-)

崇高なテキストでのUnicode構成

3
Mbo42