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/

  • 相关阅读:
    CSP-S2019游记
    SOJ 一句话题解整理
    CF547E Mike and Friends
    CF506E Mr. Kitayuta's Gift
    在windows环境下安装和使用Python(CPython)
    GeekGame2020_部分WriteUp
    php通过curl传输JSON对象
    Invalid datetime format: 1292 Incorrect datetime value
    解决 select2 开启 tags 不能输入中文的问题
    electerm 设置同步(Setting sync)
  • 原文地址:https://www.cnblogs.com/findumars/p/5106573.html
Copyright © 2011-2022 走看看