zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    滚动加载图片
    轮播图
    各种插件
    IE兼容
    文字换行
    CSS3 transform用法
    隐藏手机号中间几位数
    js实现收藏,首页等功能
    loading练习
    animation练习
  • 原文地址:https://www.cnblogs.com/findumars/p/5106573.html
Copyright © 2011-2022 走看看