当前位置:  开发笔记 > 编程语言 > 正文

QString - 嵌入16位的UTF8?

如何解决《QString-嵌入16位的UTF8?》经验,为你挑选了0个好方法。

我很惊讶.我开始QString::data()尝试用QString与ASCII相关的问题来帮助另一位提问者.

我制作了下面一段代码来查看QString数据的每个16位包,发现像'ä'和'ß'这样的字母似乎是用UTF-8编码的,但是用16位来存储8位.当然他们可以按自己喜欢的方式做,但是文档说QString是UTF-16.但它看起来与我不同.

更正:Qt 4.8的QString doc并没有真正提到UTF-16.但它也没有声明UTF-8与16位一起使用.

拜托,有人可以开导我!

我的代码:

QString h("AßB");

char * pt = (char*)h.data();

for(int i = 0; ;i+=2) {

   // get 16bit value
   u_int16_t s = *(u_int16_t*)(pt + i);

   // break condition
   if(s == 0) break;

   qDebug() << i << s << QChar(s) << h.size();
}

qDebug()告诉我的是:

0 65 'A' 4 
2 195 'Ã' 4 
4 159 '' 4 
6 66 'B' 4 

请注意,'ß'似乎是UTF-8编码,同时仍然对编码的两个部分使用16位.

195 159是'ß'的UTF-8编码.

我的char图告诉我'ß'的UTF-16表示应该是0x00DF.这就是我希望得到的.

另请注意,QString::size()报告的可疑大小为4而不是3.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有