码迷,mamicode.com
首页 > 其他好文 > 详细

Qt实现16进制unicode转utf-8以及国际音标编码问题

时间:2015-12-27 06:20:38      阅读:295      评论:0      收藏:0      [点我收藏+]

标签:

 

由于项目需要,需要对网络资源进行解码。遇到编码问题。研究了下基本编码原理。于是有了下面两个通用代码

 

[cpp] view plaincopy
 
  1. 1. 16进制unicode转换为utf-8中文显示  
  2.   
  3. QString unicodeToUtf_8(const QString &resStr)  
  4. {  
  5.     //  unicode转utf-8  思路: 一个unicode编码占用2字节。所以只需要用4个16进制数字结合表示就行了  
  6.   
  7.     QString temp;  
  8.     for (int i = 0; i< resStr.length();)  
  9.     {  
  10.         if (resStr.at(i) == ‘\\‘)  
  11.         {  
  12.             QString str = resStr.mid(i+2, 4);  
  13.             temp.append(str.toUShort(0, 16));  
  14.             i += 6;  
  15.         }  
  16.         else  
  17.         {  
  18.             temp.append(resStr.at(i));  
  19.             ++i;  
  20.         }  
  21.     }  
  22.     QTextCodec *codec = QTextCodec::codecForName("UTF-8");  
  23.     QString desStr = codec->fromUnicode(temp);  
  24.     return QObject::trUtf8(desStr.toLatin1().data());  
  25. }  
  26.   
  27. 2. 如何显示网络中返回的16进制unicode编码的音标??  
  28.   
  29. QString getTheDecodeSymbol(const QString &resStr)  
  30. {  
  31.     // 如何把16进制的unicode编码音标显示在窗口中?  
  32.     // 比如: \u00a0[\u026an\u02c8ta\u026at(\u0259)lm\u0259nt]  
  33.     // 解码思路如下: 先把16进制unicode编码转换为 10进制unicode编码  
  34.     // 转换方法就是下面的代码  
  35.     // 那么如何显示呢?  
  36.     // 借助QLabel的设置字体  
  37.     // tr("<span style=‘font-family:\"MS Mincho\";‘>%1</span>").arg(data);即可  
  38.     QString desStr;  
  39.     for (int i = 0; i< resStr.length();)  
  40.     {  
  41.         if (resStr.at(i) == ‘\\‘)  
  42.         {  
  43.             QString str = resStr.mid(i+2, 4);  
  44.             desStr.append(tr("&#%1;").arg(str.toInt(0, 16)));  
  45.             i += 6;  
  46.         }  
  47.         else  
  48.         {  
  49.             desStr.append(resStr.at(i));  
  50.             ++i;  
  51.         }  
  52.     }  
  53.     return desStr;  
  54. }  

http://blog.csdn.net/wu5151/article/details/47107051

Qt实现16进制unicode转utf-8以及国际音标编码问题

标签:

原文地址:http://www.cnblogs.com/findumars/p/5079453.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!