일본어/중국어 문자를 사용할 때 Mutt 테마가 깨져서 나타납니다.

일본어/중국어 문자를 사용할 때 Mutt 테마가 깨져서 나타납니다.

mutt 명령을 사용하는 경우:

mutt  -e "set content_type=text/plain"  -e "my_hdr From:[email protected]" -s "取样更多 サンプル 样品 text" -c "取样更多" -a "サンプル取样更多"

이제 이 이메일은 분명히 전송되지 않을 것입니다. 그러나 문제는 를 사용하는 이메일을 볼 때 sudo postsuper -q ID이메일 제목이 다음과 같이 왜곡된다는 것입니다.

*** ENVELOPE RECORDS deferred/8/874FF381CDB ***
message_size:             682             346               2               0             682               3
message_arrival_time: Mon Sep 14 19:44:38 2020
create_time: Mon Sep 14 19:44:38 2020
named_attribute: rewrite_context=local
sender_fullname: My_name
sender: my_name@my-pc
named_attribute: dsn_orig_rcpt=rfc822;[email protected]
original_recipient: [email protected]
recipient: [email protected]
named_attribute: dsn_orig_rcpt=utf-8;取样更多@my-pc
original_recipient: 取样更多@my-pc
done_recipient: 取样更多@my-pc
*** MESSAGE CONTENTS deferred/8/874FF381CDB ***
Received: by my-pc (Postfix, from userid 1000)
    id 094FF381CDB; Mon, 14 Sep 2020 19:44:38 +0530 (IST)
Date: Mon, 14 Sep 2020 19:44:38 +0530
From: My_name <[email protected]>
To: [email protected]
Cc: 取样更多@my-pc
Subject: =?utf-8?B?5Y+W5qC35pu05aSaIOOCteODs+ODlw==?=
 =?utf-8?B?44OrIOagt+WTgQ==?= text
Message-ID: <20200914141438.GA4858@my-pc>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment; filename*=utf-8''%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E5%8F%96%E6%A0%B7%E6%9B%B4%E5%A4%9A
Content-Transfer-Encoding: 8bit
User-Agent: Mutt/1.10.1 (2018-07-13)

サンプル body of the attached file in chinese 取样更多
*** HEADER EXTRACTED deferred/8/874FF381CDB ***
named_attribute: encoding=8bit
*** MESSAGE FILE END deferred/8/874FF381CDB ***

현재 내용은 다음 ~/.muttrc과 같습니다.

set config_charset=utf-8
set signature="iconv -f utf-8 ~/.signature |"
set charset="utf-8"
set send_charset="utf-8"
set rfc2047_parameters="yes"
set assumed_charset="utf-8"

몇 가지 중요한 로캘 환경 변수는 다음과 같습니다.

LANG=en_IN.utf8
LANGUAGE=
LC_CTYPE=en_IN.utf8
LC_NUMERIC=en_IN
LC_TIME=en_IN
LC_COLLATE="en_IN.utf8"
LC_MONETARY=en_IN
LC_MESSAGES=en_IN.utf8
LC_PAPER=en_IN
LC_NAME=en_IN
LC_ADDRESS=en_IN
LC_TELEPHONE=en_IN
LC_MEASUREMENT=en_IN
LC_IDENTIFICATION=en_IN
LC_ALL=

mutt -v는Mutt 1.10.1 (2018-07-13)

한 가지 중요한 점은 내 메일이 파일에 저장된다는 것입니다 /var/mail/my_name. 따라서 vim이 파일을 이나 편집기를 사용하여 편집하면 여전히 동일한 결과를 얻지만, 진화를 사용하여 이 파일을 열면 모든 것이 올바른 것으로 표시됩니다.

답변1

질문은 왜곡되지 않습니다. 그것은 인코딩되어 있습니다MIME 인코딩된 단어 형식. 이메일에는 단일 표준 인코딩이 없습니다. Content-Type 헤더는 본문의 인코딩을 나타내지만 Subject와 같은 헤더에는 적용되지 않습니다. 헤더에 ASCII가 아닌 문자가 포함된 경우 인코딩을 나타내는 형식으로 인코딩해야 합니다. 여기서 코드워드가 작동합니다.

=?utf-8?B?…?=UTF-8 바이트가 Base64로 인코딩된 단어입니다. UTF-8 5Y+W5qC35pu05aSaIOOCteODs+ODlw==바이트의 Base64 표현 입니다.取样更多

$ echo '=?utf-8?B?5Y+W5qC35pu05aSaIOOCteODs+ODlw==?=
 =?utf-8?B?44OrIOagt+WTgQ==?= text' |
python3 -c '
import sys;
from email.header import decode_header;
print("".join(text.decode(encoding or "ascii") for text, encoding in decode_header(sys.stdin.read())))
'
取样更多 サンプル 样品 text

관련 정보