【发布时间】:2016-06-30 03:59:30
【问题描述】:
我正在从包含中文字符的 unix shell 脚本发送报告。
当我在 textmate 之类的纯文本编辑器中打开 CSV 报告时,我可以看到中文字符,但是当我在 Excel 中打开 CSV 报告文件时,我看不到中文字符,但有些乱码。
如何“告诉”excel该文件包含中文字符集?
这是发送邮件并附加 CSV 文件的代码。
send_mail() {
v_mailpart="ZZ_/afg6432dfgkl.94531q"
echo "Mail to be sent to $RPT_SEND_TO"
echo "To: $RPT_SEND_TO
Subject: Blah Report as of $report_date_format;
Content-Type: multipart/mixed; boundary=\"$v_mailpart\"
MIME-Version: 1.0
This is a multi-part message in MIME format.
--$v_mailpart
Content-Type: text/html
Content-Disposition: inline
<html><body><p>Hi All,<p>Please find attached, the daily report <p>Thanks,
<br/>Blah Team</br/><br/><br/></p><p>NOTE: This is an auto-generated email. Do not reply to it. Please send an email to blah-group@mycompany.com in
case of any issues.<p></body></html>
--$v_mailpart
Content-Transfer-Encoding:UTF-8;
Content-Type: text/plain;charset=\"UTF-8\";
Content-Disposition: attachment; filename=blah-report.csv
`cat $spool_file5`" | /usr/sbin/sendmail -t
}
【问题讨论】:
-
请问这个帖子和Excel有什么关系?您只是在创建一个电子邮件,据我所知,您提供了正确的
Content-Type。有两件事在我看来很奇怪:Content-Transfer-Encoding真的可以是 UTF-8 吗?我从来没有听说过它,我会使用像 QUOTED-PRINTABLE 这样的东西。此外,我本来希望在Content-Disposition: attachment; ...之后是一个空行,但在电子邮件方面我并不是真正的专家,所以我在这里可能错了。 -
@user1934428 嗯,这是因为我在 excel 中打开 CSV,想知道如何“告诉 excel”CSV 文件包含 UTF-8 字符集
-
然后我误解了这个问题(因为你也用“shell”标签来标记它,并显示与将文本文件嵌入邮件标题相关的代码 - 这与控制编码无关这是由 Excel 假设的)。也许你可以相应地重写你的问题,并且只用“excel”标记它。
-
我对Excel不太了解,这也是一个问题,据我了解,这与编程不有关,所以你最好问一下在 Microsoft Office 论坛中。由于没有 100% 的规则,程序如何识别 text 文件的编码(毕竟,CSV 是),我可以想象 Excel 有一个选项,其中 Excel用户可以显式设置编码。但是,您可以尝试一件事:如果文档以 BOM 开头,许多程序会隐式假定 UTF-8,因此我会将 BOM 放在 CSV 文件的开头。