VB如何处理特殊字符,如德语ö这样单字符

chaozhou 2009-08-11 09:50:59
(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 = "asdff123@126.com" 'mname & "@" & mserver
jmail.message.AddRecipient tomain
jmail.message.Subject = "ö"
jmail.message.HTMLBody = "ö"
jmail.message= ojmail.send("smtp." & mserver)
发出邮件后,收取邮件"ö"的字符变成了"?",这个怎么解决呢?谢谢


谢谢,是不是一定要装德语单VB才行啊?还是怎样改进就ok啊?

...全文
923 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
chaozhou 2009-08-11
  • 打赏
  • 举报
回复
不是啊,如果我直接从数据库读取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发出邮件,自己接收就出现"?"啊,
什么道理啊?

谢谢
贝隆 2009-08-11
  • 打赏
  • 举报
回复
1、要操作系统支持
2、这是一个UniCode字符
Tiger_Zhao 2009-08-11
  • 打赏
  • 举报
回复
(1)VB 代码是用本地的 Ansi 编码保存的,所以不能直接输入本地代码页之外的字符,要在代码中用 ChrW(&HF0) 进行赋值。

(2)数据库读取没问题,但是 Windows 界面只能正确显示一种代码页的字符,可以在启动时用 API 函数 SetThreadLocal() 将当前进程更改为德语的。

(3)在(1)中已经说了,代码中不能直接输入ö的。
of123 2009-08-11
  • 打赏
  • 举报
回复
7 楼,接收端才会显示,它不应该是中文系统了。
supergreenbean 2009-08-11
  • 打赏
  • 举报
回复
jmail.message.Subject = ChrW(246) 看看
slowgrace 2009-08-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 of123 的回复:]
那你就不要使用字符串变量来容纳特殊字符,可以用 Byte 数组。否则操作系统自动地进行检查,把 ASCII 大于 127 且不是中文首字节的字节自动替换为“?”。
[/Quote]

我用byte数组试过,只要是在中文系统下,VB6IDE一样会显示出?

我觉得只是VB6没能力显示西欧字符,并不说明它获得了错误的字符编码。
of123 2009-08-11
  • 打赏
  • 举报
回复

那你就不要使用字符串变量来容纳特殊字符,可以用 Byte 数组。否则操作系统自动地进行检查,把 ASCII 大于 127 且不是中文首字节的字节自动替换为“?”。
slowgrace 2009-08-11
  • 打赏
  • 举报
回复
也许你自己这里看着是乱码,对方收的不是乱码

你可以找一个德文系统(或者找个中文系统设置为德文语言)做接收邮件方,实际试试。
dingyanwei 2009-08-11
  • 打赏
  • 举报
回复
这应该是jmail的问题
chaozhou 2009-08-11
  • 打赏
  • 举报
回复
请大家帮帮忙。
我只是需要用vb从数据库读取一个unicod字段,里面含有"ö"或其它欧洲语言字符,
然后用jmail发生邮件,对方收取到我的邮件不要出现"ö"变乱码"?"就行,多谢了。

只是解决这个问题就ok。 VB6.0环境,谢谢啊
chaozhou 2009-08-11
  • 打赏
  • 举报
回复
不是吧,有没其他办法啊,我是在做一个jmail发邮件系统,
发生目的地国家有,法国,德国,意大利,西班牙,俄罗斯。。。。

不会一个国家采用一个系统吧,能支持多语言吗?
jmail.message.Charset = "UTF-8" '还不行吗?

谢谢
of123 2009-08-11
  • 打赏
  • 举报
回复

跟 VB 没什么关系,是操作系统的兼容问题。最简单的方法,就是在德文版的 Windows 上开发。
chaozhou 2009-08-11
  • 打赏
  • 举报
回复
jmail怎么发生德语、日文、法文啊,

怎么弄呢?谢谢了。
chaozhou 2009-08-11
  • 打赏
  • 举报
回复
此问题应该属于jmail的多语言发生程序问题,望知道朋友告诉一下。

多谢了。
Tiger_Zhao 2009-08-11
  • 打赏
  • 举报
回复
io_stream.Charset 用来指定输出的编码格式,写入的始终是 Unicode 字符串,输出时自动进行转换。

而 jmail.message.Charset 看起来只是简单地作为邮件信息进行发送,需要你自己进行编码转换。
建议非英文字母一律按 HTML 格式进行编码,比如 ö 可用编码为 öö
chaozhou 2009-08-11
  • 打赏
  • 举报
回复
有没有人帮忙啊,是不是jmail的啊问题啊。谢谢了。
chaozhou 2009-08-11
  • 打赏
  • 举报
回复
(1)io_stream.SaveToFile App.Path & "\aa.tlt", 2
证明从数据库读取的string数据没有"ASCII 大于 127 且不是中文首字节的字节自动替换为?"的改变;
(2)但是为什么用jmail发生邮件,对方收取到我的邮件出现"ö"变乱码"?"啊?
BATTLERxANGE 2009-08-11
  • 打赏
  • 举报
回复
我弄一个日文网站采集的也碰到过这种问题。。。用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>")))
hui_hui_2007 2009-08-11
  • 打赏
  • 举报
回复
关注,帮顶。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧