vb 特殊字符 乱码

海盗船长4.0 2013-04-12 03:55:06
问题如下:有几个特殊字体需要打印,发现vb中显示乱码 希腊特殊字符 ...(csdn也不让输入特殊字符啊
-_-!)大神们可以再vb的编辑器里输入的试下,我这里显示都是?,怎么才能正常显示啊?求大神帮忙
...全文
556 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
6742 2013-05-02
  • 打赏
  • 举报
回复
谢谢,祝你快乐!
Tiger_Zhao 2013-04-29
  • 打赏
  • 举报
回复
用 VB 自带的 OLE 控件,对象类型选择 Microsoft Word Document。
把 Word 给包含进来,该满意了吧!
6742 2013-04-27
  • 打赏
  • 举报
回复
祝好。TextBox1好像只支持一种字体,选定Webdings就只有是一种,不是RICHTEXTBOX富文本框的那种可以支持多种字体共存。有支持多种字体、且能支持符号字体(如Webdings字符)的控件吗?谢谢。
Tiger_Zhao 2013-04-26
  • 打赏
  • 举报
回复
可以直接插字符,为什么要用 hWnd?
Private Sub Command1_Click()
With TextBox1
.SelStart = 5
.SelLength = 0
.SelText = ChrW(vbKeyA + Int(Rnd() * 26))
End With
End Sub
6742 2013-04-25
  • 打赏
  • 举报
回复
非常谢谢 Tiger_Zhao 可以显示Webdings字符。 就是这个TextBox1没有 hWnd 属性,要在其中插入一个字符是用什么方法呢?这套控件是为VBA配套的,在VB6中是不是完全兼容,有没有介绍这套的中文书籍或资料?谢谢
6742 2013-04-23
  • 打赏
  • 举报
回复


Option Explicit
Private Declare Function TextOut Lib "gdi32" Alias "TextOutW" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As Long, ByVal nCount As Long) As Long

Private Sub Form_Load()
Dim str As String
Dim i As Long
Me.Font.Name = "Webdings"
Me.Font.Charset = 2
Me.Font.Size = 16
Me.AutoRedraw = True

For i = &H80 To &HFF
str = str & ChrW(i)
Next
TextOut Me.hdc, 0, 0, StrPtr(str), Len(str)
End Sub
还是有的能显示,有的不能显示。我贴出WORD中的插入对话框图片,是想说明这些符号应该是有规律的,如果没有规律(不确定性),那么图片上“字符代码”所指,不就是骗人吗? 要是有规律,如何将其按规律显示出来? 谢谢!
Tiger_Zhao 2013-04-23
  • 打赏
  • 举报
回复
这些符号字体都不是 Windows 自带的,而是随 Office 安装的,所以 Office 支持得最好。
比如用 Microsoft Forms 2.0 Object Library 中的 TextBox 显示,就没问题。
Private Sub Form_Load()
Dim str As String
Dim i As Long
For i = &H80 To &HFF
str = str & ChrW(i)
Next
TextBox1.Font.Name = "Webdings"
TextBox1.Font.Charset = 2
TextBox1.Font.Size = 16
TextBox1.Text = str
End Sub
Tiger_Zhao 2013-04-22
  • 打赏
  • 举报
回复
引用 16 楼 6742 的回复:
你是说,在&H7F - &HFF 需要用其他的编码,那么在WORD中“插入符号”有如下的图片: …… 其中的字符代码,不与实际的字符对应?但插入界面上“字符代码”是连续的,为什么呢?谢谢!
这不正好说明这个段落的多义性! 仅仅改用不同的字体就能输出不同的符号了。
Option Explicit

Private Declare Function TextOut Lib "gdi32" Alias "TextOutW" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As Long, ByVal nCount As Long) As Long

Private Sub Form_Load()
    Dim str As String
    Me.Font.Name = "Webdings"
    Me.Font.Charset = 2
    Me.Font.Size = 16
    Me.AutoRedraw = True
    
    str = ChrW(&HA5) & ChrW(&HA6)
    TextOut Me.hdc, 0, 0, StrPtr(str), Len(str)
    
    Me.FontName = "Wingdings"
    TextOut Me.hdc, 0, 20, StrPtr(str), Len(str)
End Sub
“用其他的编码”的意思是如果要输出某个符号,尽量选字体无关、环境无关的编码。
6742 2013-04-19
  • 打赏
  • 举报
回复
你是说,在&H7F - &HFF 需要用其他的编码,那么在WORD中“插入符号”有如下的图片:




其中的字符代码,不与实际的字符对应?但插入界面上“字符代码”是连续的,为什么呢?谢谢!
Tiger_Zhao 2013-04-19
  • 打赏
  • 举报
回复
u0080 ~ u00FF 用于兼容 ANSI,它们的释意有多义性,这些字符的输出也是不确定的,至少不能在中文环境下输出与英文环境一样的字符。
就像扑克花色字符一样,不能用 ChrW(6) 之类的字符,而是要用 ChrW(&H2660),你需要用其他的编码输出想要的图像字符。
6742 2013-04-19
  • 打赏
  • 举报
回复
还是不行啊,我写的如下程序
Private Sub Command1_Click()
Dim str As String

RichTextBox1.SelFontName = "webdings" 
For i = &H21 To &HFF
str = ChrW(i)
SendMessageW RichTextBox1.hWnd, EM_REPLACESEL, 0, ByVal str
Next
End Sub
在上边的&H21 To &HFF中,&H21 To &H7E 之间的没有问题,其余有的显示,有的便不能正常显示。 是给的编码CHARCODE,上例中的i值有问题吗?
Tiger_Zhao 2013-04-18
  • 打赏
  • 举报
回复
VB6 被 Win95/97 拖累,输出接口为 ANSI 格式。
这里需要换成 Unicode 接口
Option Explicit

Private Declare Function TextOut Lib "gdi32" Alias "TextOutW" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As Long, ByVal nCount As Long) As Long

Private Sub Form_Load()
Dim str As String
Me.FontName = "Times New Roman"
Me.FontSize = 16
Me.AutoRedraw = True

str = ChrW(&H2660) & ChrW(&H2663) & ChrW(&H2665) & ChrW(&H2666)
TextOut Me.hdc, 0, 0, StrPtr(str), Len(str)
End Sub
Tiger_Zhao 2013-04-18
  • 打赏
  • 举报
回复
同样处理,要用 SendMessageW 替换 SendMessageA。
只要是 ANSI 接口,字符串在进行 Unicode -> ANSI(GB2312,Big5...) 的转换中,必定会有大量字符不被支持。
6742 2013-04-18
  • 打赏
  • 举报
回复
路过,想请教tiger_zhao

RichTextBox1.SelFontName = "webdings"
For i = A To B
str = ChrW(i)
SendMessage RichTextBox1.hWnd, EM_REPLACESEL, 0, ByVal str
Next

A B取不同的值时,有的能读取,有时不能,如何解决呢?
如 &H21 To &H7E 之间的没有问题,该字库中接下来的,就不知道用的什么编码了?
现在还是人类 2013-04-17
  • 打赏
  • 举报
回复
引用 1 楼 ytlviv1985 的回复:
vb不支持unicode字符表。。。
MkI==
海盗船长4.0 2013-04-17
  • 打赏
  • 举报
回复
搜狗里特殊字符
vb 不认识
of123 2013-04-15
  • 打赏
  • 举报
回复
是否安装了相应的字库。 程序中的字符编码仅仅是一个数值,要在屏幕上正确显示,需要字库“翻译”出相应的图形。
Tiger_Zhao 2013-04-15
  • 打赏
  • 举报
回复
Unicode 字符可以是任意值,但要正确显示必须字体支持。
你可以在记事本中输入,看看选用哪个字体可以正常显示;VB 打印时也选这个字体。
贝隆 2013-04-12
  • 打赏
  • 举报
回复
引用 1 楼 ytlviv1985 的回复:
vb不支持unicode字符表。。。
何出此言?
海盗船长4.0 2013-04-12
  • 打赏
  • 举报
回复
搜狗拼音 特殊字符
加载更多回复(3)

7,763

社区成员

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

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