• 8356阅读
  • 7回复

还是编码问题 [复制链接]

上一主题 下一主题
离线roywillow
 

只看楼主 倒序阅读 楼主  发表于: 2010-09-17
— 本帖被 XChinux 执行加亮操作(2010-09-21) —
最近没事干就想写一个汉字区位码的转换工具。
至于区位码和汉字内码怎么转换网上似乎说的挺清楚的。
但是我遇到的问题是,使用QChar并赋值一个汉字(QChar buffChar = '李'),然后调用自己写的函数,能获得正确的区位码("3278"),也就是说QChar的unicode()返回了正确的值(我是把unicode()值当做GB2312汉字内码处理的);然后倒过来转换,用qDebug输出中间得到的unicode值是正确的(跟buffChar.unicode()的值一模一样),但是赋值给一个QChar后(return QChar(fullCode), fullCode是计算的unicode值),输出到qDebug中是个问号(这个我倒没感觉奇怪,经常遇到这种事情……),然后我就把这个字设置到一个窗口标题上,结果竟然是个……韩语字符似乎……
我把buffChar设置到标题上也是个韩语的字符……
于是……这种问题到底该怎么解决?这个世界难道是思密达的……
难道是QChar的编码跟GB2312有冲突?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线dbzhang800

只看该作者 1楼 发表于: 2010-09-17
一个基本问题:你知道你加单引号后 '李' 是什么意思吗?不妨解释一下
离线roywillow

只看该作者 2楼 发表于: 2010-09-17
好吧我对这一点很不清楚,印象中是表示一个char
那么应该怎么表示
以及这种赋值方式获得的区位码为什么是正确的呢?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线roywillow

只看该作者 3楼 发表于: 2010-09-17
呃……那啥我好像理解了一些了……
'李'赋值给QChar的是个GB2312(或者那个啥更新的编码)内码,跟unicode不对应……
所以……怎么输出一个GB2312呢……
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线water_wf

只看该作者 4楼 发表于: 2010-09-21
判断编码是个难题,不过firefox里面有基于统计的判断方式,幸运的是这个模块式独立,你把弄出来就行了,正确率很高的
离线dbzhang800

只看该作者 5楼 发表于: 2010-09-21
引用第4楼water_wf于2010-09-21 09:10发表的  :
判断编码是个难题,不过firefox里面有基于统计的判断方式,幸运的是这个模块式独立,你把弄出来就行了,正确率很高的


编码判断是个世界性的难题。但楼主不涉及这方面的问题,只是一些基本的概念不清楚

1. ‘李’,楼主都说的是一个 char,竟没再多考虑一点有什么问题,或许这样的写法更明显点 'ab' , ‘abcd’


2. QChar 存储的只不过是一个整数,你送个数据进去,再将这个数据读出来,两个数据一样不能说明任何问题。(当然,它证明QChar工作正常)
离线roywillow

只看该作者 6楼 发表于: 2010-09-23
前几天网络渣了没法看帖子了……
谢谢大伙了
我打从外部读取一个表格来实现区位码转换
那么这个该用什么容器好呢?Hash或Map?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线kenter1643
只看该作者 7楼 发表于: 2010-09-23
QString.fromUtf8("中文字符")
快速回复
限100 字节
 
上一个 下一个