如何在VBScript变量中设置日语字符(UTF-8)

如何在VBScript变量中设置日语字符(UTF-8),vbscript,character-encoding,Vbscript,Character Encoding,我有一个脚本,需要将一些日文文本设置为变量。但由于vbscript不支持日文文本,它会被转换为一些乱码文本,如ÞÞ710;ÞÞÞÞÞÞÞ囝囝囝囝囝囝囝囝囝囝囝囝囝囝囝囝囝囝。我的实际日语文本是トコジャパンからの新規注文 我的脚本如下所示 dim emlObj set emlObj = CreateObject("EMailObject") emlObj.Subject = "Train - New Orders From Costco Japan | コストコジャパンからの新規注文" emlOb

我有一个脚本,需要将一些日文文本设置为变量。但由于vbscript不支持日文文本,它会被转换为一些乱码文本,如
ÞÞ710;ÞÞÞÞÞÞÞ囝囝囝囝囝囝囝囝囝囝囝囝囝囝囝囝囝囝。我的实际日语文本是
トコジャパンからの新規注文

我的脚本如下所示

dim emlObj
set emlObj = CreateObject("EMailObject")
emlObj.Subject = "Train - New Orders From Costco Japan | コストコジャパンからの新規注文"
emlObj.Body = "Some japanese body text"
emlObj.Send()
到目前为止,我没有任何其他选项,比如将此文本存储在文件或数据库中,并在其他一些脚本中处理。因为我们的客户将使用此脚本,他们将设置预期的电子邮件正文文本。我们将使用它们作为邮件发送

我也尝试过ADODB.Steam,但这只在从文件中读取文本时起作用

有人能建议一种用vbscript设置日语文本的方法吗

编辑: 明确我真正需要什么。
我想将日文文本硬编码为VBScript中的变量。

您可以使用此解决方案:

Dim objStream, body, subject
Set objStream = CreateObject("ADODB.Stream")
objStream.CharSet = "utf-8"
objStream.Open
objStream.WriteText "Subject in Japanese"
objStream.SaveToFile "C:\Subject.txt", 2
objStream.Close
objStream.Open
objStream.WriteText "Body in Japanese"
objStream.SaveToFile "C:\body.txt", 2
objStream.Close
objStream.CharSet = "utf-8"
objStream.Open
objStream.LoadFromFile "C:\Body.txt"
body = objStream.ReadText()
objStream.Close
objStream.CharSet = "utf-8"
objStream.Open
objStream.LoadFromFile "C:\Subject.txt"
subject = objStream.ReadText()
objStream.Close
' Now body is stored in body variable and subject is in subject now do anything with them

重要提示:由于您没有使用ADODB.Stream加载内容,因此请确保将实际的VBScript文件保存为UTF-16 LE编码。您的脚本还可以选择使用Unicode字节顺序标记(BOM)头,这取决于VBScript引擎和EmailObject的响应方式

一旦VBScript文件采用正确的编码,此脚本对我来说就可以正常工作:

With CreateObject("CDO.Message")
    With .Configuration.Fields
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")  = "smtp.somemailserver.net"
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10 
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
        .Update
    End With

    .BodyPart.Charset = "utf-8"
    .BodyPart.ContentTransferEncoding = "base64"

    .TextBody = "コストコジャパンからの新規注文"
    .TextBodyPart.Charset = "utf-8"

    .HTMLBody = "<p>コストコジャパンからの新規注文</p>"
    .HTMLBodyPart.Charset = "utf-8"

    .From = "me@somemailserver.net"
    .To = "you@somemailserver.net"
    .Subject = "Train - New Orders From Costco Japan | コストコジャパンからの新規注文"

    .Send()
End With
使用CreateObject(“CDO.Message”)的

使用.Configuration.Fields
.项目(”http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.项目(”http://schemas.microsoft.com/cdo/configuration/smtpserver“”=“smtp.somemailserver.net”
.项目(”http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10 
.项目(”http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.更新
以
.BodyPart.Charset=“utf-8”
.BodyPart.contentTransferncode=“base64”
.TextBody=”コストコジャパンからの新規注文"
.TextBodyPart.Charset=“utf-8”
.HTMLBody=“コストコジャパンからの新規注文

" .HTMLBodyPart.Charset=“utf-8” .From=”me@somemailserver.net" .To=”you@somemailserver.net" .Subject=“列车-来自好市多日本的新订单”コストコジャパンからの新規注文" .Send() 以
注意:我使用的是上面的CDO.Message,而不是EmailObject


希望这有帮助。

什么是
CreateObject(“EMailObject”)
,看起来是一个自定义COM组件?这回答了你的问题吗?@Lankymart是的,这是一个为发送电子邮件而创建的自定义对象。但问题不在这个对象上。当我用日语在code
objStream.WriteText”主题中设置日语文本时“
,它将转换为乱码文本。因此,我需要一种方法,将日语文本直接设置到vbscript的variable@Dhaya你还没有解释什么是
EmailObject
,如果你不回答问题,你希望我们如何帮助你?很可能是您实例化的COM组件未处理UTF-8编码。导致问题的不是自定义对象。即使我取下该对象,并尝试将日语文本直接分配给vbscript中的变量,也会失败。我尝试将脚本文件转换为utf-16 LE,但也没有成功。你能告诉我你是如何为你的脚本设置文件编码类型为UTF-16 LE的吗?用一个像样的文本编辑器。我用的是TextPad,但Notepad++和其他软件也能做到这一点。