UTF8Decode function为什么不能正确显示utf8的文字?(5分)

  • 主题发起人 主题发起人 computercsl
  • 开始时间 开始时间
C

computercsl

Unregistered / Unconfirmed
GUEST, unregistred user!
Edit1.Text:= '大家好';
Edit2.text:=utf8Encode(WideString(Edit1.Text));
Memo1.Text:=UTF8Decode(Edit2.Text);
结果memo1.text的显示结果为空?
请教!
 
UTF-8是Unicode的一种编码格式,Windows直接支持的Unicode编码格式是UTF-16,Delphi里面的WideString字符串实际上就是UTF-16编码格式字符串。
把WideString转换成UTF-8以后,在Windows平台下,没有任何办法可以直接显示它里面的文字。把UTF-8编码格式的字符串直接赋值给Memo1.Text不能显示的原因在于:1.Delphi的TMemo控件是以ANSI方式来处理文本的,而UTF-8是Unicode编码格式,ANSI控件是不能直接处理Unicode编码文本的。2.虽然UTF8Decode函数返回的是string类型的数据,但并不是说UTF-8编码格式的文本是ANSI字符串,只是因为UTF-8编码格式跟ANSI字符串一样,也是8位的编码单元,两者在存取方法上是一样的。所以在Delphi里面用string类型的变量来存储UTF-8编码格式的字符串数据,但这个UTF-8格式的string是不能直接用来显示的。想要显示它,你必须自己通晓UTF-8编码格式,把它转换成ANSI或Unicode字符串才行。
 
后退
顶部