首页| 论坛| 消息

标题:关于字符转换
作者:vachin
日期:2006-09-07 15:14
内容:

QT里有没有这样的函数,可以将字符的16进制编码,转换成一个字符串
例:"汉字" Unicode编码为: 6C49 5B57
转换成字符串"6C495B57"
我主要用于,中文名文件的字符串命名


#1 [vachin 09-08 09:40]
chineseStrTo16Str(const QString& srcStr, QString& destStr)
{
int length = srcStr.length();
for (int i=0; i
#2 [wangowen 09-08 15:17]
这是英文的做法,一个字母只有一个字节,像字母a的ASCII码是0X61,转换成unicode后是0X6100,为什么要后面会加上00呢,因为0x61的最高为为0,所以认为这是ASCII码所以转换后要使它占两个字节,必须扩充,而汉字的在计算机内本身就是以两个字节存储的,汉字的机内码也就是GB2312编码是BABA不需要对它最高位是得到的第一个字节最高位为1,转换后是不会变的。
#3 [vachin 09-09 13:51]
但是,
"汉字"
unicode码为 6C49 5B57
而gb2312码为 BABA D7D6
ch.unicode()到底是输出unicode编码,还是扩充后的ascii
#4 [wylhistory 09-11 11:56]
你只需要把你的源字符串先转化成unicode就可以了.
比如:
QTextCoec *chinese=QTextCodec::codecForLocale();
QString tempString=chinese->toUnicode(srcString);
然后调用你的函数chineseStrTo16Str(tempString, destStr);
以上在qt3.1上已通过.
#5 [vachin 09-12 08:32]
谢谢

回复 发表
主题 版块