VB UTF-8 Unicode 文件名 文件 求解 100
这个问题困扰许久一直没有解决,百度许久没有答案,再最后一次提问,还是没有回答也就放弃吧。问题是这样子的。现在编写了一个批量文件处理的软件,主要是用来批量修改编辑文件,例如...
这个问题困扰许久一直没有解决,百度许久没有答案,再最后一次提问,还是没有回答也就放弃吧。
问题是这样子的。
现在编写了一个批量文件处理的软件,主要是用来批量修改编辑文件,例如提取大量文件中的链接等等,大部分功能都完成了,不过实际使用中就遇到了问题,就是Unicode的问题。
再次说明,此处的Unicode不是通常VB所说的Unicode,不是字节而是编码。
由于需要处理的文件都是网上保存的网页,所以文件内容和文件名经常会含有Unicode字符,这些字符看起来和普通字符没有两样,但是在VB中就是无法正常显示的,会自动转化为?。
这样子就造成,假若文件内容含有这类字符,往往只能处理其中的英文字符数字等,汉字什么,都是乱码。
假若文件名有这类字符,基本就是文件不能打开,因为VB自动转换,造成文件名一直错误。
于是想问有没有办法可以解决编码问题,判断文字编码类型,并读取,文本内容我还可以按字节读取再转化,但是文件名无解,
改文件名就免了,我想的是解决问题,这个必须解决。
再说一遍此处Unicode不是通常所说的Unicode 是UTF-8之类编码问题。
能解决,追加,
Unicode 文件名 何解,关键? 展开
问题是这样子的。
现在编写了一个批量文件处理的软件,主要是用来批量修改编辑文件,例如提取大量文件中的链接等等,大部分功能都完成了,不过实际使用中就遇到了问题,就是Unicode的问题。
再次说明,此处的Unicode不是通常VB所说的Unicode,不是字节而是编码。
由于需要处理的文件都是网上保存的网页,所以文件内容和文件名经常会含有Unicode字符,这些字符看起来和普通字符没有两样,但是在VB中就是无法正常显示的,会自动转化为?。
这样子就造成,假若文件内容含有这类字符,往往只能处理其中的英文字符数字等,汉字什么,都是乱码。
假若文件名有这类字符,基本就是文件不能打开,因为VB自动转换,造成文件名一直错误。
于是想问有没有办法可以解决编码问题,判断文字编码类型,并读取,文本内容我还可以按字节读取再转化,但是文件名无解,
改文件名就免了,我想的是解决问题,这个必须解决。
再说一遍此处Unicode不是通常所说的Unicode 是UTF-8之类编码问题。
能解决,追加,
Unicode 文件名 何解,关键? 展开
5个回答
展开全部
这个我真没鼓捣过,但是可以给你出个思路。当初大学老师讲过一点儿,当时没研究,后来也没用。
网页是能够自动识别unicode的文本的,因为不同的字符编码方式是不在一个数值范围的,所以通过数值范围能够判断是否是unicode,还是普通的ascii的。你可以看看有没有自动的转码的函数,在MSDN上找找看,如果能找到是最简便的了。另外读取文件的方式用二进制的方式读取,不要当它是个文本文件,而是当它是个数据文件来读取。读取进来之后先判断是那个类型的,如果是unicode的就得按照unicode的方式处理,否则就用文本的方式打开。
网页是能够自动识别unicode的文本的,因为不同的字符编码方式是不在一个数值范围的,所以通过数值范围能够判断是否是unicode,还是普通的ascii的。你可以看看有没有自动的转码的函数,在MSDN上找找看,如果能找到是最简便的了。另外读取文件的方式用二进制的方式读取,不要当它是个文本文件,而是当它是个数据文件来读取。读取进来之后先判断是那个类型的,如果是unicode的就得按照unicode的方式处理,否则就用文本的方式打开。
参考资料: http://www.jb51.net/article/25968.htm
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先占个位置,顺便说下,文件保存时开头几个字节说明了该文件编码方式,unicode第一,二字节是255,254,你用二进制文件方式读前几字节判断是哪种编码,这编嘛最简单,和程序使用编码一致,二进制integer二字节读,ascw转换保存字符串
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个很简单的,你只要按字节写入然后读出转化就可以了,把Unicode中的uft-8编码反汇编成字节,然后读出并转化就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我以前读取过UTF-8网页,现在拿给你参考一下。
窗体中一个按钮,一个多行文本框
Private Sub Command1_Click()
URLaddr = "http://api.douban.com/book/subject/isbn/9787115157676"
Dim IEread As Object
Dim i&, jj&, aa$
Set IEread = CreateObject("WinHttp.WinHttpRequest.5.1")
CallByName IEread, "Open", VbMethod, "GET", URLaddr, True
CallByName IEread, "Send", VbMethod
CallByName IEread, "WaitForResponse", VbMethod
aa = CallByName(IEread, "ResponseText", VbMethod)
Text1.Text = aa
End Sub
窗体中一个按钮,一个多行文本框
Private Sub Command1_Click()
URLaddr = "http://api.douban.com/book/subject/isbn/9787115157676"
Dim IEread As Object
Dim i&, jj&, aa$
Set IEread = CreateObject("WinHttp.WinHttpRequest.5.1")
CallByName IEread, "Open", VbMethod, "GET", URLaddr, True
CallByName IEread, "Send", VbMethod
CallByName IEread, "WaitForResponse", VbMethod
aa = CallByName(IEread, "ResponseText", VbMethod)
Text1.Text = aa
End Sub
参考资料: http://zhidao.baidu.com/question/350255425.html?oldq=1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-01-20
展开全部
是否是unicode,还是普通的ascii的。你可以看看有没有自动的转码的函数,在MSDN上找找看,如果能找到是最简便的了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询