SSHを介してVimを使用しているときに、Webページから私のコンテンツをSSH/Vimセッションにコピーし、次の結果を得ました。
_SIZE=`df -h|grep $DISC|awk <91>{print $2}<92>`
_
どうやら_<91>
_と_<92>
_は_'
_を表していますが、これを検索して置き換えるにはどうすればよいですか?そして、その_91
_/_92
_はどういう意味ですか? ASCII平均_91
_および_92
_を意味する__\
_/_[
_のため、これはどのようにエンコードされますか?
ソースWebページのコンテンツが熱心に再フォーマットされました。テキストは間違いなく、カーリーシングルクォート(39/0x27
およびU+0027
、CP1252ではU+2018
(MS-ANSIおよびWINDOWS-1252とも呼ばれる、一般的な8ビット)の代わりに、(ストレート)シングルクォート(ASCII U+2019
、0x91 and 0x92
)を使用することになっています。 Windowsでのエンコード))。
16進コードは、Vimが使用しているエンコード(おそらくUTF-8)では無効であるため、Vimに表示されます。ファイルに既に保存されているテキストを編集している場合は、:e ++enc=cp1252
を使用してファイルをCP1252として再ロードできます。これにより、カーリークオートが表示されます。ただし、CP1252として再ロードする実際の理由はありません。0x91
および0x92
文字を削除し、それらを一重引用符で置き換えます。
91と92は、MS Windowsのデフォルトバージョンのlatin1/ISO-8859-1エンコーディングのオープンとクローズのカーリーアポストロフィ(一重引用符)の16進コードで、具体的には cp1252/Windows-1252 と呼ばれます。 =(cpはコードページを表します)。
これらの文字は、ほとんどの場合、「スマートクォート」機能の一部としてWord文書やOutlookメールからコンテンツをコピーする人によって挿入されます。このコードページの他の問題のある文字は、開閉二重引用符である16進数93/94、箇条書き(•)、およびOE合字(œおよびŒ)です。 cp1252のWikipedaページ 強調表示されている「問題のある文字」の完全なリスト(同じコードでISO-8859-1またはUTF-8に直接マッピングされないもの)を見ることができます。緑で。
正しいエンコーディングでファイルを開くだけの場合は、++ enc = cp1252オプションを:eコマンドに使用します。
:e ++enc=1252 filename.txt
Vimの特定の不正な16進コードを置換コマンド(:s)とコード置換の1つで置き換えることができます。
\d123 decimal number of character
\o40 octal number of character up to 0377
\x20 hexadecimal number of character up to 0xff
\u20AC hex. number of multibyte character up to 0xffff
\U1234 hex. number of multibyte character up to 0xffffffff
16進数の91/92文字を変更するには、次の操作を行う必要があります。
:%s/[\x91\x92]/'/g
開く前に、iconv
を使用してテキストファイルをCP1252からUTF-8に変換します。
iconv -f cp1252 -t utf8 inputfile.csv > outputfile.csv
Mac OSではこれを使用します。
iconv -f cp1252 -t UTF8-MAC inputfile.csv > outputfile.csv