测试UnicodeString和UTF8String

831 篇文章 16 订阅
211 篇文章 3 订阅

我一直在想:如果通过std::string.c_str()方法给UnicodeString 赋值的话,编码会否转换过去呢?换句话说,UnicodeString在接受一个char*指针的时候是根据什么编码来的呢?

看如下示例:

void __fastcall TForm1::FormShow(TObject *Sender)

{

     unsigned char ansi[] = "测试";

     unsigned char gb2312[] = "\xB2\xE2\xCA\xD4";

     unsigned char utf8[] = "\xE6\xB5\x8B\xE8\xAF\x95";

     unsigned char unicode[] = "\x4b\x6d\xd5\x8b";

     String line = (char *)ansi;

     for(int i=0; i<sizeof(ansi); i++)

     {

         line += IntToHex(ansi[i], 2);

     }

     Memo1->Lines->Add(line);

     line = (char *)gb2312;

     for(int i=0; i<sizeof(gb2312); i++)

     {

         line += IntToHex(gb2312[i], 2);

     }

     Memo1->Lines->Add(line);

     line = (char *)utf8;

     for(int i=0; i<sizeof(utf8); i++)

     {

         line += IntToHex(utf8[i], 2);

     }

     Memo1->Lines->Add(line);

     line = (char *)unicode;

     for(int i=0; i<sizeof(unicode); i++)

     {

         line += IntToHex(unicode[i], 2);

     }

     Memo1->Lines->Add(line);

     UTF8String utf8line = (char *)utf8;

     for(int i=0; i<sizeof(utf8); i++)

     {

         utf8line += IntToHex(utf8[i], 2);

     }

     Memo1->Lines->Add(utf8line);

}

答案如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值