请问vb中如何解决这个unicode问题-怎样定义双字节的字符[高分]

hualahuala 2003-08-18 05:55:02
分数不够,可以再加
有一个unicode文件,里面有一些西欧字符
现在要把读出来,用对话框显示
我用了下面一段程序,但是出问题,很多字符不能正常显示
请大家帮忙
Dim TempFile As Long
Dim LoadBytes() As Byte


TempFile = FreeFile
Open "d:\codeTEST.txt" For Binary As #TempFile
ReDim LoadBytes(1 To LOF(TempFile)) As Byte
Get #TempFile, , LoadBytes
Close TempFile

's 01 = StrConv(LoadBytes, vbFromUnicode)

MsgBox (LoadBytes)
其中关闭掉的那一行也不起什么作用,显示的字符还没有关闭后显示得多
请问应该怎么设置,是否loadbytes不对,应当设置为双子节的数据类型
vc中能够解决,可是vb中怎么解决呢?
...全文
175 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyl910 2003-08-20
  • 打赏
  • 举报
回复
Edit是Windows系统提供的控件
MFC只是把它封装成了类
(VB封装成了TextBox,只不过只封装了ANSI版的)
Greaitm 2003-08-20
  • 打赏
  • 举报
回复
不行,也是有问号在里面。
zyl910 2003-08-20
  • 打赏
  • 举报
回复
写好了
http://www.fantasiasoft.net/Zyl910/SDK_Edit.zip
Greaitm 2003-08-19
  • 打赏
  • 举报
回复
如果阁下能够用VC搞定的话,以下这个的功能是跟VC一样的;我自己的测试也是成功的:
Private Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As Long, ByVal lpCaption As String, ByVal wType As Long) As Long

Private Sub Form_Load()
Dim TempFile As Long
Dim LoadBytes() As Byte


TempFile = FreeFile
Open "c:\xvidcore.ini" For Binary As #TempFile
ReDim LoadBytes(1 To LOF(TempFile)) As Byte
Get #TempFile, , LoadBytes
Close TempFile
MessageBox 0, VarPtr(LoadBytes(1)), "", 0
End Sub
Greaitm 2003-08-19
  • 打赏
  • 举报
回复
你用VC也没完全做好啊?里面有一大堆问号!
stonegoldaustin 2003-08-19
  • 打赏
  • 举报
回复
不好意思,没有收到,请重发一次.
或发至 ilovesnowforever@163.com 也可
hualahuala 2003-08-19
  • 打赏
  • 举报
回复
已经发送,注意查收
stonegoldaustin 2003-08-19
  • 打赏
  • 举报
回复
你把文件发到sunyan@welltech.net.cn

帮你看看呢.
hualahuala 2003-08-19
  • 打赏
  • 举报
回复
你们的方法感觉还是不行
我把文件发到这个邮箱,你们动手看一下,和你们想象的不一样的
sun_programmer@etang.com
pwd:sun_programmer
etang的免费用户
道素 2003-08-19
  • 打赏
  • 举报
回复
其实你的文件是按照ascii方式保存的否则可以直接读出来
因为你需要StrConv(str, vbUnicode)
转化一下
zyl910 2003-08-19
  • 打赏
  • 举报
回复

Input 函数


返回 String,它包含以 Input 或 Binary 方式打开的文件中的字符。

语法

Input(number, [#]filenumber)

Input 函数的语法具有以下几个部分:

部分 描述
number 必要。任何有效的数值表达式,指定要返回的字符个数。
filenumber 必要。任何有效的文件号。


说明

通常用 Print # 或 Put 将 Input 函数读出的数据写入文件。Input 函数只用于以 Input 或 Binary 方式打开的文件。

与 Input # 语句不同,Input 函数返回它所读出的所有字符,包括逗号、回车符、空白列、换行符、引号和前导空格等。

对于 Binary 访问类型打开的文件,如果试图用 Input 函数读出整个文件,则会在 EOF 返回 True 时产生错误。在用 Input 读出二进制文件时,要用 LOF 和 Loc 函数代替 EOF 函数,而在使用 EOF 函数时要配合以 Get 函数。

注意 对于文本文件中包含的字节数据要使用 InputB 函数。对于 InputB 来说,number 指定的是要返回的字节个数,而不是要返回的字符个数。
zyl910 2003-08-19
  • 打赏
  • 举报
回复
VB的String是基于Unicode的
而一般的文本文件是基于ANSI+DBCS的
所以需要用StrConv转换

vbUnicode:将ANSI+DBCS的Byte数组转为Unicode的String
vbFormUnicode将Unicode的String转为ANSI+DBCS的Byte数组
zyl910 2003-08-19
  • 打赏
  • 举报
回复
InputB是VB6的函数(VB4就有了)
houzx 2003-08-19
  • 打赏
  • 举报
回复
给你一个笨方法,绝对能放到文本框中:

Dim TempFile As Long
Dim LoadBytes() As Byte
Dim value As Long
Dim Ii As Integer
Dim result As String

TempFile = FreeFile
Open "e:\codeTEST.txt" For Binary As #TempFile
ReDim LoadBytes(1 To LOF(TempFile)) As Byte
Get #TempFile, , LoadBytes
Close TempFile

result = ""
'头两个字节(FF FE)是Unicode文件标志
For Ii = 3 To UBound(LoadBytes) Step 2
value = LoadBytes(Ii) + LoadBytes(Ii + 1) * 256&
result = result & ChrW(value)
Next

MsgBox result
lzj34 2003-08-19
  • 打赏
  • 举报
回复
StrConv(str, vbUnicode)
hualahuala 2003-08-19
  • 打赏
  • 举报
回复
zzy1910:
http://expert.csdn.net/Expert/topic/2164/2164081.xml?temp=.4780237
此贴先给你结100分。这个等到讨论完再结分。顺便考虑一下再文本框里面怎么
做.
夜草:
我们顺便也考虑一下,文本况钟怎么样解决!大家都是学点东西,分不够我可以再加
我不小气的!
zyl910 2003-08-19
  • 打赏
  • 举报
回复
strptr是VB的隐藏函数
用于得到字符串的数据的地址


me是指当前类模块(窗口模块也是类模块)
hualahuala 2003-08-19
  • 打赏
  • 举报
回复
zyl910(910:分儿,我又来了!) ( )
CopyMemory ByVal StrPtr(TempStr), TempBytes(1), UBound(TempBytes)
这句话中strptr是个什么东西呢?怎么没有定义呢?抱歉我vb不会;不定义也可以么
还有最后一句中
'MessageBoxW Me.hWnd, StrPtr(TempStr), StrPtr(Me.Caption), 0
vb中使用的是Me这个参数么?就是父窗口的指针么?和vc中很不一样阿
呵呵;解释一下好么?
我马上再开贴子
hualahuala 2003-08-19
  • 打赏
  • 举报
回复
非常感谢
非常感谢
非常感谢
zyl910(910:分儿,我又来了!) ( )
问题解决了,哈哈哈,谢谢
马上准备结账,给你300分(100分另开目录)
因为还有100分要给其他热心的人
等一下你再会我的贴子,看到后请huifu
zyl910 2003-08-19
  • 打赏
  • 举报
回复
copy错了


将“'MessageBoxW Me.hWnd, StrPtr(TempStr), StrPtr(Me.Caption), 0”去掉注释

先前调试时注释的,忘了恢复
加载更多回复(13)

7,759

社区成员

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

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