使用RDCOMClient设置内容类型UTF-8

使用RDCOMClient设置内容类型UTF-8,r,email,utf-8,outlook,rdcomclient,R,Email,Utf 8,Outlook,Rdcomclient,我在获取UTF-8格式的电子邮件正文时遇到问题。我的降价报告正常,脚本在从RStudio运行时工作,即正文文本为UTF-8。我的问题是,当我从命令行运行脚本时,我的电子邮件是使用windows-1252编码的,这是我不想要的 我如何设置我的代码以指定我的电子邮件标题的内容类型为UTF-8?InternetCodepage至少不能工作 R代码如下: ## Bodytext bodyMail <- paste(__My UTF-8 message goes here__, sep = "")

我在获取UTF-8格式的电子邮件正文时遇到问题。我的降价报告正常,脚本在从
RStudio
运行时工作,即正文文本为UTF-8。我的问题是,当我从命令行运行脚本时,我的电子邮件是使用windows-1252编码的,这是我不想要的

我如何设置我的代码以指定我的电子邮件标题的内容类型为UTF-8?InternetCodepage至少不能工作

R代码如下:

## Bodytext
bodyMail <- paste(__My UTF-8 message goes here__, sep  = "")

# init com api
OutApp <- COMCreate("Outlook.Application")

# Create email
outMail = OutApp$CreateItem(0)

# Params 
outMail[["InternetCodePage"]] = "65001"
outMail[["To"]] = __your_outlook_email___
outMail[["subject"]] = "Subject_text"
outMail[["BodyFormat"]] = "2"
outMail[["HTMLBody"]] = bodyMail
outMail[["Attachments"]]$Add(__path_to_html_report__)

## send it                     
outMail$Send()
##正文

bodyMailOutlook中的所有字符串属性(以及所有其他IDispatch友好的COM库)都是UTF-16。您有责任确保传递正确的数据


另一方面,对正常ASCII范围之外的所有字符进行HTML编码是一个好主意。这样代码页就不重要了。

我真的不明白,我想传递的文本是正确的数据。我希望能够做的是更改我在上面创建的电子邮件的html标题中的编码。目前它卡在windows 1252上。我对我的ö:s和ä:s进行了html编码,这是一种权宜之计,但对于未来的维护来说并不是最佳的。R在编码方面做了它能做的,我需要知道告诉outlook什么以及如何做。我想问题不在于上面的代码,因为只要我坚持使用R,它就可以正常工作。只有当我使用cmd时,编码才会丢失/转换。在这种情况下,不使用非人类可读的符号书写ä和ö,因为符号太少了。但是,将来可能需要编写更长的正文,一个很好的功能是让它们从零开始为人类可读。HTML编码所有扩展字符是最佳解决方案,这样您就不会依赖任何东西。当R转换为UTF-16时,它如何知道字符串的编码是什么?如果你不想要任何令人不快的惊喜,那么像这样的转变是你的责任。嗯,我理解。不过,这会使文本更难理解。在我的脚本中也有最终形式的文本会很好。但它至少解决了问题,所以我会接受答案。R(或者更确切地说,RStudio)知道,因为我告诉R它是什么编码(如果我理解正确的话),所以在安排脚本时,这不起作用。