首先VS在新创建的cpp和h文件默认是简体中文GB2312的,为了满足平台移植,国际化的代码编程。现在都使用UTF-8格式,那就先说一下vs创建工程如何设置默认保存UTF-8编码格式:
1.在 vs打开的.cpp或.h文件页,点击 文件 -> 高级保存选项 -> Unicode (UTF-8带签名) - 代码页 65001;
2.关于中文乱码的问题总结有以下5种方式参考:
- 1: ui.pushButton->setText(QString::fromLocal8Bit("你是按钮1"));
- 2: ui.pushButton_2->setText(QStringLiteral("你是按钮2")); (推荐)
- 3:ui.pushButton_3->setText(u8"你是按钮3"); (vs2015新增vs2013不支持)(推荐)
- 4:QTextCodec * BianMa = QTextCodec::codecForName("GBK"); (自己转换不推荐)
ui.label->setText(BianMa->toUnicode("你是标签")); - 5:#pragma execution_character_set("utf-8") (在用到中文的头文件添加即可) (推荐)
在使用的时候注意事项:
1.一般使用了第5种方式之后,再使用其它方式去转,除了3其它方式都不能生效;
2.第1和第2种方式的区别在于:第1种还支持字符串常量的转换例:
const char* info = "中文显示";
ui.pushButton_4->setText(QString::fromLocal8Bit(info));
第2种支持中文常量;
目前转换只了解这么多,如有好的乱码处理方式欢迎留言交流。