回答:
ソースWebページのコンテンツが過度に再フォーマットされました。テキストは間違いなく使用(ストレート)単一引用符(ASCIIになっていた39/0x27
、U+0027
)の代わりに(カール単一引用符U+2018
とU+2019
され、0x91 and 0x92
; Windowsの一般的な8ビット符号化)も、MS-ANSIおよびWindows-1252としても知られているCP1252に() 。
16進コードは、Vimが使用しているエンコード(おそらくUTF-8)で有効ではないため、Vimに表示されます。すでにファイルに保存されているテキストを編集している場合は、ファイルをCP1252としてリロードできます:e ++enc=cp1252
。これにより、中引用符が表示されます。ただし、CP1252としてリロードする本当の理由はありません。単に0x91
and 0x92
文字を削除し、一重引用符に置き換えてください。
:e ++enc=cp1252
:e ++enc=cp1252
か?私は、コマンドラインからVIにMSワードの文字を含むファイルをしたい場合、かなりのviを開いて、その後でファイルをロードするよりも、1つのステップでそれを行うことができるようにいいだろう:e
コマンド
vim --cmd 'set fileencodings=cp1252' /path/to/file
—コマンドは通常の前に実行され.vimrc
、fileencodings
オプションを設定します(末尾に注意してくださいs
;短い名前を使用することもできますfencs
)。Vimはファイルのロード時にCP1252のみを試行します。これは、そのようなファイルの1回限りの編集で機能するはずですが、Vimのそのインスタンスを使用して他のエンコーディングのファイルを編集する場合、問題が生じる可能性があります。
vim -c"set fencs" /path/to/file
91および92は、MS Windowsのデフォルトバージョンのlatin1 / ISO-8859-1エンコードのオープンおよびクローズ中アポストロフィ(単一引用符)の16進コードで、具体的にはcp1252 / Windows-1252(cpはコードを表します)ページ)。
これらの文字は、ほとんどの場合、「スマートクォート」機能の一部としてWord文書/ Outlookメールからコンテンツをコピーする人々によって挿入されます。このコードページの他の問題のある文字は、二重引用符で始まる16進数の93/94、箇条書き(•)、およびOEの合字(œおよびŒ)です。cp1252のウィキペダページで、緑色で強調表示された「問題文字」の完全なリスト(同じコードでISO-8859-1またはUTF-8に直接マップされない文字)を確認できます。
正しいエンコーディングでファイルを開くだけであれば、:eコマンドに++ enc = cp1252オプションを使用します。
:e ++enc=1252 filename.txt
Vimの特定の不良な16進コードを、代替コマンド(:s)とコード置換のいずれかで置き換えることができます。
\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
sed -i "s/[\x91\x92]/\'/g" *.txt
が、うまくいきませんでした。
perl -p -i -e "s/[\x91\x92]/'/g" *.txt
sed -i "s/\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
実際には、16進91および92を表しています。Windowsコードページでは、中括弧で一重引用符を開始および終了しています( 'および'-Alt-0145およびAlt-0146)。
次の検索/置換を試してください。
:s%/\<9[12]\>/'/g