Verwenden der UTF8-Codierung als Standard beim Schreiben von E-Mails

8

Wenn ich eine E-Mail senden möchte, die ich in Emacs verfasst habe, drücke ich C-c C-cund es wird immer eine solche Fehlermeldung angezeigt:

These default coding systems were tried to encode text
in the buffer `2015-02-03_19:08:30_1':
  (utf-8-unix (302 . 4194243) (303 . 4194208) (305 . 4194243) (306 .
  4194217) (308 . 4194243) (309 . 4194221) (311 . 4194243) (312 .
  4194227))
However, each of them encountered characters it couldn't encode:
  utf-8-unix cannot encode these:        

Click on a character (or switch to this window by `M-o'
and select the characters by RET) to jump to the place it appears,
where `C-u M-x what-cursor-position' will give information about it.
[...]

Zu diesem Zeitpunkt kann ich manuell eine Codierung auswählen und meine E-Mail wird gesendet. Was ich nicht verstehe ist, dass ich immer utf-8als Codierung auswähle , wenn ich diese Nachricht erhalte und es einfach funktioniert! In der Nachricht heißt es jedoch, dass utf-8-unixeinige Zeichen nicht codiert werden können.

Kann mir jemand sagen, warum Emacs nicht utf-8standardmäßig auswählen kann und was diese Fehlermeldung in diesem Zusammenhang bedeutet?

EDIT 2015/02/05

Ich verwende mu4eund habe es (setq-default buffer-file-coding-system 'utf-8)ohne Erfolg versucht (nach Auswertung dieses Ausdrucks ist der Wert der Variablen nicht 'utf-8aber , wenn ich anfange, eine neue E-Mail zu schreiben 'utf-8-unix).

EDIT 2015/02/06

Ich habe es auch versucht M-x set-keyboard-coding-system utf-8und (setq mm-coding-system-priorities '(utf-8))aber das hatte keine sichtbare Wirkung.

EDIT 2015/02/21

Ich habe gerade bemerkt, dass dieses Problem nur auftritt, wenn es smtpmail-queue-mailist t. Ich denke, das Problem liegt in der E-Mail-Warteschlangenfunktion.

Damien Cassou
quelle
Hilft die Beschwörung, die utf-8in allen Puffern bevorzugt wird ? (setq-default buffer-file-coding-system 'utf-8)
PythonNut
Welchen Mailer verwenden Sie? RMAIL, Gnus, Fernweh?
jch
@jch Es ist markiert mu4e.
PythonNut
Ich antwortete durch Bearbeiten der Frage
Damien Cassou
Kann die Einstellung (set-keyboard-coding-system 'utf-8)helfen?
Name

Antworten:

4

Ich habe mich viel mit diesem Thema beschäftigt. Die Codierung hängt von den Informationen in der Datei ab. Wenn die Datei keine expliziten Informationen enthält, um festzustellen, um was es sich handelt, können Sie die oben genannten Informationen erhalten.

Wenn Ihre Arbeit nicht viele alte Systeme umfasst, die eine andere Codierung erfordern, können Sie die Standard-UTF-8-Codierung überall erzwingen . Es ist heutzutage praktisch ein Standard, zumindest im Westen (für mich jedenfalls), da es im Web dominiert; hat eine Eins-zu-Eins-Zuordnung mit ASCII; flexibel genug, um jeden Unicode-Charakter auf der Welt darzustellen. Damit Emacs UTF-8 standardmäßig überall verwenden kann:

(prefer-coding-system 'utf-8)
(set-default-coding-systems 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-language-environment 'utf-8)

Nach der Evaluierung behandelt Emacs neue Dateien, Puffer, Prozesse usw. so, als wären sie UTF-8. Beachten Sie, dass Emacs weiterhin ein anderes Codierungssystem verwendet, wenn die Datei eine dateilokale Variable wie diese -*- coding: euc-tw -*-oben in der Datei enthält. (Überprüfen Sie die 48.2.4 Local VariablesDateien im Emacs-Handbuch.)

EHartC
quelle
Ich habe diese Zeilen zu .emacs hinzugefügt. Wenn ich jedoch eine neue TeX-Datei erstelle, meldet "file -bi" weiterhin, dass sie als us-ascii codiert ist. Irgendwelche Ideen?
schmerzhaft Englisch
1

Ich verwende Emacs compose-mail(Cx m) zum Senden von E-Mails und bin auf ein ähnliches Problem bei der Codierung gestoßen. Ich bin mir nicht sicher, ob dies Ihnen helfen würde:

(setq mm-coding-system-priorities '(utf-8))
kuanyui
quelle
keine Wirkung (ich habe die Frage bearbeitet)
Damien Cassou
0

Bei allen Einstellungen über wurden die Codierungsfenster weiterhin angezeigt. Ich habe mehr Nachforschungen angestellt und diese Einstellung herausgefunden:

(setq message-default-charset 'utf-8)
(add-to-list 'mm-body-charset-encoding-alist '(utf-8 . base64))

Das Problem wurde für mich gelöst. Ich arbeite unter Mac OS 10.14.5, Emacs 26.1.

Adam Faryna
quelle