14

エンコーディング固有の方法で vim にデータを解釈させたくありません。言い換えれば、vim を使用しているときに、カーソルが置かれている文字を、そのバイトの utf* (など) 表現ではなく、実際のbyteに対応させたいのです。

他の人が (他のソフトウェアを使用して) 作成した Unicode 変換エラーによって引き起こされた問題を分析するために vim を使用する必要があるため、実際にそこにあるものを確認することが重要です。

たとえば、Cygwin の vim では、UTF-8 BOM を次のように表示できました。

≫ [ファイルデータの開始]

これは完璧です。私はこれを UTF-8 BOM として認識しています。各文字の 16 進数を知りたい場合は、カーソルを文字の上に置いて「ga」を使用できます。

最近、適切な Linux マシン (Fedora) を入手しました。/etc/vimrc には、この行が存在します

fileencodings=ucs-bom,utf-8,latin1 を設定します。

このマシンで UTF-8 BOM を見ると、BOM は完全に隠されています。

~/.vimrc に次の行を追加すると

fileencodings=latin1 を設定します

そうですか

ã¯Â»Â¿

最初の 3 文字は BOM です (これらに対して ga が使用されている場合)。最後の3文字がわかりません。

ある時点で、UTF-8 BOM が「feff」で表されているのを見たことさえありました (UTF-16 BOM)。

とにかく、あなたは私の問題を見てください。vimがバイトを解釈せずに、ファイルの内容を正確に確認する必要があります。xxd、od などを使用できることはわかっていますが、vim は常に分析ツールとして非常に便利でした。さらに、変換の問題なくファイルを編集して保存できるようにしたいと考えています。

ご協力いただきありがとうございます。

4

3 に答える 3

17

使用'binary'モード:

:edit ++bin file

また

vim -b file

から:help 'binary':

'fileencoding' および 'fileencodings' オプションは使用されず、ファイルは変換されずに読み取られます。

于 2012-08-31T17:48:27.317 に答える
6

シーケンスは、実際には U+FEFF (BOM) でエンコードされた UTF-8、デコードされた latin1、エンコードされた UTF-8、および再度デコードされた latin1 です。 UTF-8 としてエンコードされ、latin1 としてデコードされた U+FEFF (BOM) です。エンコーディングから逃れることはできません。これらは実際のバイトではなく、誤ったデコードから表示された latin1 文字です。バイトが必要な場合は、16 進エディタを使用してください。それ以外の場合は、正しいデコードを使用してください。

于 2012-09-01T00:59:40.500 に答える