用户名:  密码:   
您当前的位置:首页 > 程序设计 >  Delphi > 

Memo控件显示UTF8网页源码乱码的问题

上次修改时间: 2024-06-12 15:17:05      来源:网络总结      作者:钢铁长陈
上一页      路径:DSD\Learn\Delphi语言\常用控件使用说明\      下一页

关于Memo控件显示UTF8网页源码乱码的问题

错误:No Mapping for the Unicode character exists in the target multi-byte code page. 在目标多字节代码页中不存在unicode字符的映射
原因:指定utf8编码打开Ansi编码文件,zong.txt文件编码方式用Ansi,使用Memo1.Lines.LoadFromFile('d:\zong.txt', TEncoding.UTF8)

UTF8是Unicode编码的一种,delphi对UTF8支持不好,需要用函数转换一下再显示
delphi11的Memo与Stringlist用LoadFromFile打开文件ANSI正常,打开ut8会乱码,但带有BOM的utf8不会乱码,
delphi11的Memo用SaveToFile保存文件默认格式Notepad显示为带有Bom的utf8,N++显示为utf-8-BOM

1. 使用Utf8ToAnsi函数转换
s := idhttp1.get(Edit1.Text);
memo1.lines.text := Utf8ToAnsi(s);

2. 相关函数还有
AnsiToUtf8
Utf8ToAnsi
UTF8Decode
UTF8Encode

3. memo打开与保存utf8文件不乱码的方法
Memo1.Lines.LoadFromFile('d:\zong.txt', TEncoding.UTF8);
Memo1.Lines.SaveToFile('d:\hehe.txt', TEncoding.UTF8);