vimを使用してファイルをutf8に変換するにはどうすればよいですか?


回答:


178

latin1としてエンコードされたファイルを編集している場合、そのバッファーの 'fileencoding'がlatin1に設定されていることがわかります。そのため、ファイルを保存する前に手動でファイルエンコーディングを設定する必要があります。

:set fileencoding=utf8
:w myfilename

また、UTF8ファイルは多くの場合、エンディアンを示すバイトオーダーマーク(BOM)で始まることに注意してください。BOMは任意であるが、一部のプログラムは、ファイルのエンコーディングを決定するために独占的にそれを使用します。特定の条件下では、VimはBOMを作成しますが、作成しない場合もあります。BOMを明示的に設定するには、次のようにします。

:set bomb

詳細:help mbyte-optionsおよび:help utf8およびについて:help bomb


手順は正常に機能することがわかりましたが、1)utf-8にはエンディアンがありません(vimヘルプの説明のように、utf-8 BOMはファイル utf-8であることを示しているだけです)。2)後でファイルを再び開くときは、前もって再度持っている必要がありますset fileencoding=utf-8。Vimは、BOMを作成するように指示した場合、BOMに気付くことさえありません(実際にそれを作成します)。utf-8を機能させるには、それまたはset encoding=utf-8起動設定が必要です。少なくとも、それは私のシステムの話です。
スタイン

35
:w ++enc=utf-8 %

ファイルをutf-8エンコーディングでディスクに書き込む。


5
これは正しいですが、あなたの答えは、エリックジョンソンのものと比較してそれほど多くの賛成票を集めるべきではありません。その理由は、を設定しない場合fileencoding:w ++enc=utf-8は1回だけ有効ですが、次回を実行する:wときにの値'fileencoding'が使用され、値を変更していない場合(編集中に明示的に、またはファイルを再ロードすることによって)これ'fencs'は適切に設定され、実際のエンコーディングが正しく検出されます)、古いエンコーディングが返されます。
Benoit

1
@ MichaelKrelin-hacker、変更fileencodingも質問に対する有効な回答です。これはIMOが悪い習慣をとることにはなりません。でもそれは気分だけの問題だと思います。
ブノワ

3
@Benoit、私はエリックの答えが無効であることを暗示しませんでした!私が彼の答えについて何か奇妙なものを見つけた場合、それは内容ではなく、なぜ彼が質問と彼自身の質問への答えを続けて投稿したのか:)
マイケルクレリン-ハッカー

3
@Michael Krelin-ハッカー:FAQを確認してください。実際にあなた自身の質問に答えることをお勧めします。これはこのようなQ&Aページの要点です。誰が答えてもかまいません。
0xC0000022L 2013

2
@ 0xC0000022L、前回チェック(今はチェックしていません)したところ、質問と回答を1 分以内に投稿することではなく、調査後に解決策を考え出すことについて何かがありました。とはいえ、私は彼の答えについて奇妙なことだけを話していました。
マイケルクレリン-ハッカー、2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.