(1)在vb6.0中如何定义一个变量并且给变量初始值="ö",在编辑器中输入ö老是出现?
(2)从数据库读取unicode编码字符,里头有ö字符,读出来后怎样debug.print出来或者msgbox输入来,不要出现"?"的乱码;
(3)从数据库读取含"ö"单unicode字符,然后
    jmail.message.Logging = True
    jmail.message.Silent = True  'if it is true any error can alert.
    jmail.message.Charset = "UTF-8" '
    jmail.message.MailServerUserName = "user" 'mname
    jmail.message.MailServerPassWord = "pw37657" 'mpw
    jmail.message.From = "[email protected]" 'mname & "@" & mserver
    jmail.message.AddRecipient tomain
    jmail.message.Subject = "ö"
    jmail.message.HTMLBody = "ö"
    jmail.message= ojmail.send("smtp." & mserver)
    发出邮件后,收取邮件"ö"的字符变成了"?",这个怎么解决呢?谢谢
  谢谢,是不是一定要装德语单VB才行啊?还是怎样改进就ok啊?

解决方案 »

  1.   


    跟 VB 没什么关系,是操作系统的兼容问题。最简单的方法,就是在德文版的 Windows 上开发。
      

  2.   

    不是吧,有没其他办法啊,我是在做一个jmail发邮件系统,
    发生目的地国家有,法国,德国,意大利,西班牙,俄罗斯。不会一个国家采用一个系统吧,能支持多语言吗?
    jmail.message.Charset = "UTF-8" '还不行吗?谢谢
      

  3.   

    请大家帮帮忙。
    我只是需要用vb从数据库读取一个unicod字段,里面含有"ö"或其它欧洲语言字符,
    然后用jmail发生邮件,对方收取到我的邮件不要出现"ö"变乱码"?"就行,多谢了。只是解决这个问题就ok。  VB6.0环境,谢谢啊
      

  4.   


    那你就不要使用字符串变量来容纳特殊字符,可以用 Byte 数组。否则操作系统自动地进行检查,把 ASCII 大于 127 且不是中文首字节的字节自动替换为“?”。
      

  5.   


    我用byte数组试过,只要是在中文系统下,VB6IDE一样会显示出?我觉得只是VB6没能力显示西欧字符,并不说明它获得了错误的字符编码。
      

  6.   

    jmail.message.Subject = ChrW(246) 看看
      

  7.   

    (1)VB 代码是用本地的 Ansi 编码保存的,所以不能直接输入本地代码页之外的字符,要在代码中用 ChrW(&HF0) 进行赋值。(2)数据库读取没问题,但是 Windows 界面只能正确显示一种代码页的字符,可以在启动时用 API 函数 SetThreadLocal() 将当前进程更改为德语的。(3)在(1)中已经说了,代码中不能直接输入ö的。
      

  8.   

    1、要操作系统支持
    2、这是一个UniCode字符
      

  9.   

    不是啊,如果我直接从数据库读取unicode字符后
    Dim io_stream As ADODB.Stream
        Set io_stream = New ADODB.Stream
        io_stream.Type = 2
        io_stream.Charset = "utf-8"
        io_stream.Open
    读取数据库字符,并且赋值到io_stream
        io_stream.SaveToFile App.Path & "\aa.tlt", 2为什么上面输出的文件就能够显示出“ö",而用jmail发出邮件,自己接收就出现"?"啊,
    什么道理啊?谢谢
      

  10.   

    我弄一个日文网站采集的也碰到过这种问题用ChrW好象都不行
    我用的办法,参考一下吧
    'Open App.Path & "\XXX.html" For Binary Access Write As #intFile
    'Put #intFile, , xml.responsebody
    'Close #intFile
    Dim s As New Stream
    s.Open
    s.Type = adTypeText
    s.Charset = "shift-jis"
    s.Position = 0
    s.LoadFromFile App.Path & "\xxx.html"
    s.Position = 0
    tempdaima = s.ReadText()
    tempdaima = UCase(Right(tempdaima, Len(tempdaima) - InStr(1, tempdaima, "<html>")))
      

  11.   

    (1)io_stream.SaveToFile App.Path & "\aa.tlt", 2 
       证明从数据库读取的string数据没有"ASCII 大于 127 且不是中文首字节的字节自动替换为?"的改变;
    (2)但是为什么用jmail发生邮件,对方收取到我的邮件出现"ö"变乱码"?"啊?
      

  12.   

    有没有人帮忙啊,是不是jmail的啊问题啊。谢谢了。
      

  13.   

    io_stream.Charset 用来指定输出的编码格式,写入的始终是 Unicode 字符串,输出时自动进行转换。而 jmail.message.Charset 看起来只是简单地作为邮件信息进行发送,需要你自己进行编码转换。
    建议非英文字母一律按 HTML 格式进行编码,比如 ö 可用编码为 &ouml; 或 &#246;
      

  14.   

    此问题应该属于jmail的多语言发生程序问题,望知道朋友告诉一下。多谢了。
      

  15.   

    jmail怎么发生德语、日文、法文啊,怎么弄呢?谢谢了。