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啊?

...全文
1068 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
  • 打赏
  • 举报
回复
关注,帮顶。
下载代码方式:https://pan.quark.cn/s/dd3561eca308 在软件开发领域,面向对象编程(OOP)是一种普遍采纳的结构化方法,它使得开发者能够借助模拟现实环境中的实体和关系来构建软件系统。在本案例中,我们观察到的是一个关于借助抽象类来执行不同几何图形面积求解的实践应用。现在,让我们详细分析这一议题。 标题 "应用抽象类计算面积" 清晰地表明我们将要讨论一个抽象类,此类设定了一个用于测量图形面积的标准函数,但并未提供实际的执行过程。抽象类在诸如C#或Java等编程语言中通常借助`abstract`修饰符进行声明,它们无法直接创建对象实例,仅能作为其他类的基础模板。 描述部分提及的"图形界面应用"暗示这是一个基于视觉用户界面(GUI)的系统,可能运用了.NET Framework的Windows Forms或WPF技术,或者是Java平台的Swing或JavaFX框架。在这样环境下,用户能够通过视觉元素与这些几何体进行互动,例如输入相关尺寸并观看到计算得出的面积值。 抽象类“几何体”内嵌了“计算面积”这一抽象函数。在代码层面,这可以被表述为: ```csharp public abstract class GeometricShape { public abstract double CalculateArea(); } ``` 随后,有三个派生类:圆(Circle)、矩形(Rectangle)和三角形(Triangle),它们各自提供了这个抽象函数的具体实现。比如,圆的面积是通过π乘以半径的平方得到的,矩形的面积是长和宽的乘积,而三角形的面积可能是底乘以高再除以2的结果。这些类将提供具体实现来计算它们各自的面积: ```csharp p...
内容概要:本文系统研究了移相控制全桥LLC谐振变换器的工作特性,深入分析其在不同工作模式下的运行机理与性能表现,重点探讨了软开关实现、高效率能量转换及宽范围电压调节等关键技术优势。通过Simulink搭建精确的仿真模型,对谐振腔参数、开关频率、电压增益、系统效率等关键指标进行仿真分析,验证了理论设计的正确性。同时,详细研究了移相控制策略对系统动态响应、稳定性和轻载/重载工况适应性的影响,揭示了控制参数与电路参数之间的耦合关系,为高频高效电源设计提供了理论依据和实践指导。; 适合人群:具备电力电子技术、模拟电路及自动控制理论基础,从事开关电源、新能源变换器、电动汽车充电模块或高频电源系统研发的工程师及高校研究生。; 使用场景及目标:①掌握全桥LLC谐振变换器的拓扑结构、工作原理与关键参数设计方法;②理解移相控制在实现零电压开通(ZVS)和零电流关断(ZCS)中的作用机制;③通过Simulink仿真掌握变换器建模、参数优化与性能评估流程,服务于实际产品开发与学术课题研究。; 阅读建议:建议读者结合提供的Simulink仿真模型进行同步操作,重点关注谐振网络(Lr, Lm, Cr)参数与移相角之间的匹配设计,深入理解软开关条件的形成过程,并通过调整负载和输入电压进行多工况仿真,以全面掌握系统动态特性。

7,787

社区成员

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

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