找回密码
 立即注册
收起左侧

关于源代码汉字编码的问题

3
回复
9748
查看
[复制链接]

尚未签到

来源: 2013-9-16 14:40:39 显示全部楼层 |阅读模式
1Qter豆
环境:qt4.8.5 + qt creator2.6 + msvc2010

源代码编码如果设为GB2312,
main.cpp里写:
    QTextCodec *codec = QTextCodec::codecForName("GB2312");    QTextCodec::setCodecForLocale(codec);    QTextCodec::setCodecForTr(codec);    QTextCodec::setCodecForCStrings(codec);
那么不能在全局变量里定义并初始化QString变量里放中文
例:QString abc="中文";
把abc显示到界面上时会变成乱码,原因是因为全局变量在main()函数在执行前已经被定义好了。

源代码编码如果设为UTF8,
main.cpp里写:
    QTextCodec *codec = QTextCodec::codecForName("UTF8");    QTextCodec::setCodecForLocale(codec);    QTextCodec::setCodecForTr(codec);    QTextCodec::setCodecForCStrings(codec);
那么在代码里直接写汉字时,经常会出现编译错误:c2001: 常量中有换行符;

真是两头都为难,有什么完美的解决办法没有?


最佳答案

查看完整内容

QString abc=QTextCodec::codecForName("GB2312")->toUnicode("中文"); 全局变量这样写 看看,应该可以
回复

使用道具 举报

累计签到:410 天
连续签到:1 天
2013-9-16 14:40:40 显示全部楼层
QString abc=QTextCodec::codecForName("GB2312")->toUnicode("中文");
全局变量这样写  看看,应该可以
回复

使用道具 举报

尚未签到

2013-9-17 11:40:41 显示全部楼层
这样确实可以,不过我全局全局变量里放的是字符串数组,这样就太麻烦,如果只是一个字符串的话,直接在构造函数里初始化一下就行了,不用搞这么麻烦了。
我的变量一般是下面的样子,就是为了一次能初始化好所有的字符串:
QString sl[]={"中文","中文","中文","中文","中文","中文"};

点评

这个麻烦?只是代码比较长而已。  详情 回复 发表于 2013-9-17 12:38
回复

使用道具 举报

累计签到:410 天
连续签到:1 天
2013-9-17 12:38:45 显示全部楼层
popdog0 发表于 2013-9-17 11:40
这样确实可以,不过我全局全局变量里放的是字符串数组,这样就太麻烦,如果只是一个字符串的话,直接在构造 ...

这个麻烦?只是代码比较长而已。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了