• 6485阅读
  • 6回复

[提问]关于中文编码的问题 [复制链接]

上一主题 下一主题
离线闲雨
 

只看楼主 正序阅读 楼主  发表于: 2010-07-03
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
今天弄了一天都没弄成功,就是关于在qt下怎么把一个short的数字转化成汉字显示
比如汉字的“自”的GBK码是D7D4
我要把D7D4转化成“自”显示出来,就是不知道怎么弄,在网上找了很多,都不好用
大家有知道的吗,帮帮忙
离线meteor01

只看该作者 6楼 发表于: 2010-07-05
unicode 与 GBK 可以自动转换吗/
www.puahzotech.com
离线闲雨

只看该作者 5楼 发表于: 2010-07-04
还有个问题我不理解,为什么4个字符就是QByteArray::fromHex("D7D4")这种写法,2个字符就是QByteArray("\xD7\xD4"))写法呢?
因为我以前用过c语音,对QByteArray不理解,看了帮助也不理解,我认为QByteArray   a,就相当于c语言里的 char c[10]这个
离线闲雨

只看该作者 4楼 发表于: 2010-07-04
试验了一下1楼的解释,是对的哦,O(∩_∩)O哈哈~,灰常感谢呀,我怎么就想不出这样的做法呢
离线闲雨

只看该作者 3楼 发表于: 2010-07-04
楼上朋友,ultraedit32知道的吧?它读文件不就是16进制方式的,你在它里面随便填一个D7 D4,右侧就会显示“自”的,这就是GBK码对应的汉字,我是这样理解的哦
我在vc里是处理过这种的只要定义一个char s[3]  ,让s【0】=0xd7, s[1]=0xd4, s[2]='\0'  ,就可以输出“自”
在linux下的qt旧不会弄了
离线闲雨

只看该作者 2楼 发表于: 2010-07-04
D7D4就是16进制的short哦,就是0xD7D4,我对编码就是不熟悉,呵呵
离线dbzhang800

只看该作者 1楼 发表于: 2010-07-03
不清楚你是否清楚自己问题症结在那儿(是对编码不熟,还是对Qt不熟),至少从你的问题中看出你认为 GBK 编码是一个 short,这个论断就是不太对的。
再就是 D7D4 是长度4的字符串?长度2的字符串?还是你提到的short?

下面是分别假定你说的是4和2的例子

QString s;

s = QTextCodec::codecForName("gbk")->toUnicode(QByteArray::fromHex("D7D4"))

s = QTextCodec::codecForName("gbk")->toUnicode(QByteArray("\xD7\xD4"))

至于short,你自己根据endian情况自己写写看
快速回复
限100 字节
 
上一个 下一个