passkalilo 发表于 2009-12-12 21:57:03

FileRead读取UTF-8编码中文字符为什么会显示为乱码?

本帖最后由 passkalilo 于 2009-12-12 22:08 编辑

用FileRead函数读取文本文件, 有时候读取出来的中文是乱码,经反复测试得知 FileRead函数只有在读取UTF-8编码的文本时有时会出错, 而有时又是正确的,不知是何原因, 论坛有个贴子问过这个问题,但是无果而终, 希望有人能给解答一下

按如下操作,读出来的肯定是乱码
1. 新建一个文本文档->另存为-> 编码方式选utf-8
2. 执行下面语句 InetGet('http://www.baidu.com",'html.txt',1)
    $html = FileRead('html.txt')
    msgbox(0,'',$html)显示结果为什么会是乱码?

passkalilo 发表于 2009-12-15 18:41:42

要沉下去了

xkowen 发表于 2010-6-28 11:08:44

这个问题得解决,因此要狠狠的顶

lpxx 发表于 2010-6-28 11:22:17

帮助里这样写:#include <IE.au3>
_IECreate ( [$s_Url = "about:blank" [, $f_tryAttach = 0 [, $f_visible = 1 [, $f_wait = 1 [, $f_takeFocus = -1]]]]] )所以:#include <ie.au3>
$oHTTP = _IECreate("http://www.baidu.com/", 0, 0, 1, 0)
$HTMLSource = _IEDocReadHTML($oHTTP)
MsgBox(0, "test:", $HTMLSource)

lpxx 发表于 2010-6-28 11:27:53

搜索了一下,给你参考
使用BinaryToString转换一下
转换一个二进制变量为ANSI字符串.
BinaryToString ( 表达式[,标志])
标志 = 1 (默认), binary 数据为 ANSI 编码
标志 = 2, binary 数据为 UTF16 小编码
标志 = 3, binary 数据为 UTF16 大编码
标志 = 4, binary 数据为 UTF8 编码

论坛另一种说法是使用microsoft.xmlhttp获取网页源码后就可以了
希望对你有帮助。

lchl0588 发表于 2010-6-29 08:32:01

InetGet('http://www.baidu.com",'html.txt',1)
    $html = FileRead('html.txt')
    msgbox(0,'',$html)上面是你的代码,我没有测试,只发现一个问题就是在编辑器中,'html.txt'不正常,还是符号的问题:
:InetGet("http://www.baidu.com",'html.txt',1)
    $html = FileRead('html.txt')
    msgbox(0,'',$html)就是"http://www.baidu.com" ,这个前后标点符号有错误,前单后双,肯定不对! 其它未测试
页: [1]
查看完整版本: FileRead读取UTF-8编码中文字符为什么会显示为乱码?