Emacsは保存のたびにコーディングシステムを要求しています


7

多くのテキストファイル(win、mac、unix)を1つのorgmodeファイルに統合しました。一部の文字では、正しい文字の代わりに数字が表示されていました。\ 314 \ 203のようなもの。

「revert-buffer-with-coding-sytem」を使用して、utf-8-hfs-unixを選択しました。それはそれを修正します。

しかし今、私が保存するたびに、Emacsはコーディングシステムを選択するように私に尋ねます。raw-textを選択した場合、要求を停止しますが、ファイルを再度開くと、数値が戻ります。

どうすれば修正できますか?


1
-*- coding: utf-8-hfs-unix;-*-ファイルの最初の行に追加してみませんか?(gnu.org/software/emacs/manual/html_node/emacs/...
JeanPierre

これは部分的に機能しました。これ以上の数はありません。問題は、Emacsを保存すると、もう一度コーディングシステムを要求されることです。raw-textを選択した場合のみ、毎回確認することなく保存できます。
Jason Mirk、2016年

2
ファイルに複数の互換性のない文字セットの文字が含まれている可能性がありますか?
JeanPierre

そう思いますが、どうすれば修正できますか?
Jason Mirk、2016年

1
Emacsを使用して最初の数日間(数年前)に問題がありましたが、次のリンクのアプローチを採用し、振り返りませんでした-emacsをリセットしてファイルをutf-8-unix文字エンコーディングで保存するには?- stackoverflow.com/a/20736147/2112489 それはelethenにより、前の回答に似ていますが、私は数年前に追加したことをいくつかのものがあります。ただし、プロンプトをトリガーする特殊文字はまだいくつかあります。これらの文字に遭遇することはめったにないので(通常、光学式文字認識後にファイルを編集するとき)、この問題にこれ以上時間を費やすことはありません。
2016年

回答:


6

これは、何が起こっているのかを理解する前にもしばらくの間起こりました-これがこのようなことが起こる例の例です-(それが重要な場合、私はこのビルドに固有のものである場合、私はWindowsにいます) -

UTF-8でエンコードされたファイルがあり、Latin-1またはWindows-1252コードページでエンコードされたWebサイトのテキストをいくつか貼り付けたとします。たとえば、ウムラウト付きのO、または中かっこなどです。

これで、UTF-8でエンコードされた文字のシーケンスに続いて、UTF-8には意味がないか、誤って解釈される可能性のある文字が続きます。それを正しいUTF-8シーケンスとして解釈できない場合は、生の値として表示されます(例:8進数の\ 326(Latin-1コードページのウムラウト付きのO))。これは、UTF-8の場合、特に\ 326の後に、上位2ビットが10の何かが続くことが想定されており、そうでない場合、それをどうするかがわからないためです。

たとえば、https://www.gnu.org/software/emacs/manual/html_node/emacs/Intro.html#Introにアクセスして、「GNUの `G '」のように、中かっこを含むテキストをコピーします。そして、それをUTF-8エンコードされたバッファーに貼り付けると、「GNUの\ 221G \ 222」になります。

じゃあ何をすればいいの?

まず、さまざまなエンコーディングシステムでバッファを調べて、それらの文字が正しく表示されるかどうかを確認できます。たとえば、Windows-1252とLatin-1はかなり一般的です-

M-x revert-buffer-with-coding-system windows-1252 RET
M-x revert-buffer-with-coding-system latin-1 RET

この方法でドキュメントの見栄えが良くなった場合は、この新しいエンコーディングで保存できます。あり、多くの異なる符号化方式のはも。

UTF-8に戻すには、次のようにします。

M-x revert-buffer-with-coding-system utf-8 RET

なぜこれが発生するのかはわかりません-Emacsが何かがクリップボードにエンコードされた方法を知っていて、それに応じて翻訳しているように見えますが、そうではないようです。

詳細については、https://stackoverflow.com/questions/1543613/how-does-utf-8-variable-width-encoding-workおよびhttp://kunststube.net/encoding/を参照してください


1
私はそれをVisual Studio Codeで開いて完全に読みました。保存され、emacsで開かれました。すべて正常に見えます!
Jason Mirk、2016年

@JasonMirk興味深い-おそらく、Latin-1などの奇妙な文字に使用するコーディングシステムを推測し、それらをUTF-8に変換しましたか?
ブライアンバーンズ

私はそう思う。それはすべて良い人です。ソール・グッドマン。
Jason Mirk、2016年

これは解決策ではありませんが、@ JeanPierreのコメントとともに役立ちました。目的は、目的のエンコーディングでファイルを読み取り(Alt + x revert-buffer-with-coding-system)、ASCII以外の文字を検索して、無効のままの文字をフィルター処理することです(Mx search-forward-regex [[: nonascii:]] RET)。
emagar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.