AnsiString 在 Delphi 中虽然不可用,但是,在 C++ 中可以用

[C++] C++ Builder 中 Ansi 编码的字符串在Android/iOS程序中显示的问题

呃,这个问题说起来,其实也不麻烦,C++ Builder 本身在 TEncoding 做了处理,但是,可能用起来还是不够舒服,毕竟 Delphi 的 TBytes 在 C++ Builder 里用,还是感觉怪怪的。

不过,可以告诉大家一个好消息,AnsiString 在 Delphi 中虽然不可用,但是,在 C++ 中可以用。

接下来,告诉大家一个坏消息,你指望 AnsiString 直接赋值给一个 UnicodeString ,然后显示出来的梦在跨平台的情况下是不成立的。

不过,你要注意一下,C++ Builder 中 AnsiString 实际上是 typedef  AnsiStringT<0> AnsiString; 时,你是不是感觉找到了啥指路明灯?

问题就出在这个AnsiStringT<0> 上,0 在 Windows 下对应的是CP_ACP,是操作系统的默认代码页,而 Android 和 iOS 上默认的代码页并不是 936,所以中文显示会出问题。

继续,是不是能找到思路了,我们这样写就OK了:

AnsiStringT<936> S=”这是Ansi编码的字符串”;

然后你会发现,美好的中文又回来了。

好了,用 TEncoding 的话,C++ 的写法更麻烦一些,还是这么写简单一点点~~~~

http://blog.qdac.cc/?p=3400

-----------------------------------------------------------------------------------------

另外还有高手Hack以后,Delphi里能用的AnsiString:

http://andy.jgknet.de/blog/downloads/

posted @ 2016-01-06 18:16  findumars  Views(1016)  Comments(0Edit  收藏  举报