Delphi2010生成GB2312字库乱码问题

  用Delphi2010做一个点阵字库软件,字库生成部分是从一个用Delphi2007做旧的程序里扣出来的。点阵字库软件完成后生成GB2312字库在LED控制卡上显示为乱码。知道Delphi版本高于2009(含),则Delphi是unicode版本,旧程序无问题,那么问题肯定出在编码转字符部分,于是查到

  S : String;

      S := Chr(Q) + Chr(W); // Q 和 W 分别是GB2312区域码的高字节和低字节

在GB2312编码表找到字符“啊”的区域码为 B0A1,用

    ShowMessage(Chr($B0) + Chr($A1););

显示出字符果然不对。

Delphi版本高于2009(含),则Delphi是unicode版本,函数Chr返回的是对应编码的unicode字符。对于英文字母、数字等,和低版本的返回结果一致;对于汉字,则一般返回对应编码的unicode字符。

于是改用AnsiChar();

  ShowMessage(AnsiChar($B0) + AnsiChar($A1));

显示字符为“啊”。

至此问题解决。

posted @ 2015-04-16 13:06  酒醉的Tiger  阅读(712)  评论(0编辑  收藏  举报