书香 发表于 2023-5-18 20:29

【易语言乱码问题】

本帖最后由 书香 于 2024-2-10 04:22 编辑

当我们读取某个文件时,会出现乱码情况,我们首先先创建一个txt文本,在里面写上“你好”,然后另存为,如图所示:


在学习之前,你需要先阅读知识点:008:【UTF-8和GBK】
ANSI编码相当于gbk

易语言读取代码:
.版本 2
.支持库 shell
.支持库 spec

.子程序 _按钮1_被单击
.局部变量 数据, 字节集
.局部变量 文本内容, 文本型

数据 = 读入文件 (取特定目录 (3) + “123.txt”)
调试输出 (数据)

文本内容 = 到文本 (数据)
调试输出 (文本内容)

当我们存储为ANSI编码时,T调试结果过为:
* 字节集:4{196,227,186,195}
* “你好”


当我们存储为utf8编码时,T调试结果过为:
* 字节集:6{228,189,160,229,165,189}
* “浣犲ソ”

看上去是乱码,这是因为易语言字节集到文本默认使用的是gbk格式,所以读取本地文件123.txt时,会将上面的{228,189,160,229,165,189}默认为3个字符,所以乱码的本质就是解码出错(本来3个一组结果2个1组)
重点,我们可以使用如下写法:
.版本 2
.支持库 shell
.支持库 spec

.子程序 _按钮1_被单击
.局部变量 数据, 字节集
.局部变量 文本内容, 文本型

数据 = 读入文件 (取特定目录 (3) + “123.txt”)
调试输出 (数据)

文本内容 = 到文本 (数据)

文本内容 = 编码_utf8到gb2312 (文本内容)
调试输出 (文本内容)



调试结果:
* 字节集:6{228,189,160,229,165,189}
* “你好”

重点提示:
①:编码_utf8到gb2312来自于精易模块,听不懂的话说明你前面的课程没有认真看 017:【支持库和模块】

②:gb2312相当于GBK编码

(点击返回课程目录:https://www.52hb.com/thread-58658-1-1.html)

sjtkxy 发表于 2023-6-8 05:17

页: [1]
查看完整版本: 【易语言乱码问题】