• 7501阅读
  • 10回复

获得中文二进制或十进制编码 [复制链接]

上一主题 下一主题
离线treat
 
只看楼主 正序阅读 楼主  发表于: 2010-09-07
— 本帖被 XChinux 执行加亮操作(2010-09-08) —
那位高人教教我,怎么获得中文编码。比如我QString str="汉字",想获得每个汉字的编码  也就是6C49  5B57分别是这两个字的编码。我想做个发短信的程序,现在英文没有问题了,就是中文比较不会。谢谢 各位指教。万分感谢!
离线treat
只看该作者 10楼 发表于: 2010-09-08
我调用了length结果是4,是不是我在存入的时候应该是让他fromLocal8bit(“汉字”)这样呢,能不能加你QQ。麻烦你教教我。
离线dbzhang800

只看该作者 9楼 发表于: 2010-09-08
引用第8楼treat于2010-09-08 17:19发表的  :
额有没有将汉字存进去,没明白啊。定义了QString chinese=“汉字”这样不行么,


我最怕的就是你会这样说。如果你不说,还有50%是对的,既然说的,那么90%以上你这地方非常不清楚。你不妨对它调用length,看看结果是多少 2, 4, 还是 6

引用第8楼treat于2010-09-08 17:19发表的  :
6C49就是汉字编码啊,使用汉字unicode编码转换器的得到得不就是这个么。

这样的话,你应该给他加上引号,来避免歧义 “6C49”
离线treat
只看该作者 8楼 发表于: 2010-09-08
额有没有将汉字存进去,没明白啊。定义了QString chinese=“汉字”这样不行么,6C49就是汉字编码啊,使用汉字unicode编码转换器的得到得不就是这个么。
离线dbzhang800

只看该作者 7楼 发表于: 2010-09-08
引用第6楼treat于2010-09-08 16:34发表的  :
4楼的大哥 ,为什么qDebug出来的是??呢,我用”汉字“测试出来的不是6C49  5B57。方便的话 能不能留下你QQ或者加我的292011912谢谢你啊 我是真的比较着急

他和我一样,第一反应你就是你要的是GBK或区位码。

你必须搞清几个问题
第一个就是 : QString abc = "汉字";   你有没有将汉字存到QString中去!
第二个, 你用6C49 要表达到底是什么东西, 0x6C49 , 0x6C 0x49, "6C49", "\x6C\x49"
第三个,你只要你前两个解决了,就没了,QString 之间 utf16 不用转换
离线treat
只看该作者 6楼 发表于: 2010-09-08
4楼的大哥 ,为什么qDebug出来的是??呢,我用”汉字“测试出来的不是6C49  5B57。方便的话 能不能留下你QQ或者加我的292011912谢谢你啊 我是真的比较着急
离线treat
只看该作者 5楼 发表于: 2010-09-08
太给力了各位,我先试试楼上的。谢谢 谢谢
离线ecamelzj

只看该作者 4楼 发表于: 2010-09-08
哈哈,真巧了,昨天我刚刚解决了这个问题
memcpy((char*)pBuffer, str.toLocal8Bit().data(), len);
就是这么简单,可以看到pBuffer的内容变成了汉字的编码
离线dbzhang800

只看该作者 3楼 发表于: 2010-09-07
不好意思啊,没仔细看,还以为你给的是区位码。unicode一般是 U+6C49 这样表示吧?

那问题就简单了,你只需要确认对 QString str="汉字"  了解不了解就够了(之所以这样说,是因为据我所知,Qt中遇到中文问题的90%以上都不了解这条语句在做什么)


由于QString内部就是utf16编码,所以从QString中取得你要的那两个值不需要任何变换。
离线treat
只看该作者 2楼 发表于: 2010-09-07
额楼上的大哥,我只是单纯的想得到那个unicode的编码,你说的我不明白你想告诉我什么,不过你给的网站我会认真看的,谢谢先
离线dbzhang800

只看该作者 1楼 发表于: 2010-09-07
引用楼主treat于2010-09-07 21:16发表的 获得中文二进制或十进制编码 :
那位高人教教我,怎么获得中文编码。比如我QString str="汉字",想获得每个汉字的编码  也就是6C49  5B57分别是这两个字的编码。我想做个发短信的程序,现在英文没有问题了,就是中文比较不会。谢谢 各位指教。万分感谢!

如果你对 QString str="汉字" 这种语句意为着什么不了解,可以看http://hi.baidu.com/cyclone/blog/item/9d7293130e5a498d6538dbf1.html

如果这你对这条语句的做了什么很了解,你需要的只不过是unicode ==> gb13080 ==> 区位码 一个转换

或许可简单看一个这个 http://hi.baidu.com/cyclone/blog/item/d299af51e04aed868d543064.html
快速回复
限100 字节
 
上一个 下一个