首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

vb 特殊字符 乱码,该如何解决

2013-07-01 
vb 特殊字符 乱码问题如下:有几个特殊字体需要打印,发现vb中显示乱码希腊特殊字符 ...(csdn也不让输入特殊

vb 特殊字符 乱码
问题如下:有几个特殊字体需要打印,发现vb中显示乱码  希腊特殊字符 ...(csdn也不让输入特殊字符啊
-_-!)大神们可以再vb的编辑器里输入的试下,我这里显示都是?,怎么才能正常显示啊?求大神帮忙 vb?乱码
[解决办法]
可以用啊!

Option Explicit

Private Sub Form_Load()
    Text1.Text = "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ" & vbCrLf & _
                 "αβγδεζηθικλμνξοπρστυφχψω"
End Sub

[解决办法]
引用:
vb不支持unicode字符表。。。
何出此言?
[解决办法]
Unicode 字符可以是任意值,但要正确显示必须字体支持。
你可以在记事本中输入,看看选用哪个字体可以正常显示;VB 打印时也选这个字体。
[解决办法]
是否安装了相应的字库。

程序中的字符编码仅仅是一个数值,要在屏幕上正确显示,需要字库“翻译”出相应的图形。

[解决办法]
引用:
vb不支持unicode字符表。。。

MkI==
[解决办法]
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

[解决办法]
本帖最后由 bcrun 于 2013-04-19 12:34:02 编辑 路过,想请教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 之间的没有问题,该字库中接下来的,就不知道用的什么编码了?
[解决办法]
同样处理,要用 SendMessageW 替换 SendMessageA。
只要是 ANSI 接口,字符串在进行 Unicode -> ANSI(GB2312,Big5...) 的转换中,必定会有大量字符不被支持。
[解决办法]
还是不行啊,我写的如下程序

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值有问题吗?
[解决办法]
u0080 ~ u00FF 用于兼容 ANSI,它们的释意有多义性,这些字符的输出也是不确定的,至少不能在中文环境下输出与英文环境一样的字符。
就像扑克花色字符一样,不能用 ChrW(6) 之类的字符,而是要用 ChrW(&H2660),你需要用其他的编码输出想要的图像字符。
[解决办法]
你是说,在&H7F - &HFF 需要用其他的编码,那么在WORD中“插入符号”有如下的图片:

vb 特殊字符 乱码,该如何解决


其中的字符代码,不与实际的字符对应?但插入界面上“字符代码”是连续的,为什么呢?谢谢!
[解决办法]
引用:
你是说,在&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

“用其他的编码”的意思是如果要输出某个符号,尽量选字体无关、环境无关的编码。
[解决办法]


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中的插入对话框图片,是想说明这些符号应该是有规律的,如果没有规律(不确定性),那么图片上“字符代码”所指,不就是骗人吗?
要是有规律,如何将其按规律显示出来?
谢谢!
[解决办法]
这些符号字体都不是 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 可以显示Webdings字符。
就是这个TextBox1没有 hWnd 属性,要在其中插入一个字符是用什么方法呢?这套控件是为VBA配套的,在VB6中是不是完全兼容,有没有介绍这套的中文书籍或资料?谢谢


[解决办法]
可以直接插字符,为什么要用 hWnd?
Private Sub Command1_Click()
    With TextBox1
        .SelStart = 5
        .SelLength = 0
        .SelText = ChrW(vbKeyA + Int(Rnd() * 26))
    End With
End Sub

[解决办法]
祝好。TextBox1好像只支持一种字体,选定Webdings就只有是一种,不是RICHTEXTBOX富文本框的那种可以支持多种字体共存。有支持多种字体、且能支持符号字体(如Webdings字符)的控件吗?谢谢。
[解决办法]
用 VB 自带的 OLE 控件,对象类型选择 Microsoft Word Document。
把 Word 给包含进来,该满意了吧!
[解决办法]
谢谢,祝你快乐!

热点排行