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

奇怪的中文问题

4
回复
8070
查看
[复制链接]
累计签到:21 天
连续签到:1 天
来源: 2013-11-21 11:03:23 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
按论坛里教程建立了一个试验项目:
http://www.qter.org/forum.php?mo ... &extra=page%3D1

由于我是在windows下用的5.1.1
  • 将tools->option->text editor->Behavior->File Encodings中设置为UTF8和Always Delete。
  • 在main.cpp中QApplication a(argc, argv);后面添加了代码QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));

然后奇怪的问题就出现了,在mainwindow.cpp中,代码:ui->pushButton->setText("新窗口");就会运行出错,错误信息为:
warning: C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
error: C2001: 常量中有换行符
error: C2143: 语法错误 : 缺少“)”(在“}”的前面)
error: C2143: 语法错误 : 缺少“;”(在“}”的前面)

如果将这段代码改为:
ui->pushButton->setText("new新window");

ui->pushButton->setText("窗口");

ui->pushButton->setText("汉字");
都运行正常,汉字在窗口上的显示也没有问题。真是百思不得其解,希望有人能解答。

附:mainwindow.cpp代码如下:
  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"

  3. MainWindow::MainWindow(QWidget *parent) :
  4.     QMainWindow(parent),
  5.     ui(new Ui::MainWindow)
  6. {
  7.     ui->setupUi(this);
  8.     ui->pushButton->setText("新窗口");
  9. }

  10. MainWindow::~MainWindow()
  11. {
  12.     delete ui;
  13. }
复制代码
回复

使用道具 举报

累计签到:773 天
连续签到:1 天
2013-11-21 12:19:59 显示全部楼层
改成 ui->pushButton->setText(QString("新窗口")); 试下。。
回复 支持 反对

使用道具 举报

累计签到:21 天
连续签到:1 天
2013-11-21 14:39:02 显示全部楼层
simpleway 发表于 2013-11-21 12:19
改成 ui->pushButton->setText(QString("新窗口")); 试下。。

试过了,还是有一样的问题。看来对中文的处理问题。
回复 支持 反对

使用道具 举报

累计签到:21 天
连续签到:1 天
2013-11-22 12:08:28 显示全部楼层
尝试下来,win7+vs2010的环境下要完全搞定中文乱码问题还是挺难的,试验了各种方法,还是难以完全杜绝乱码。
换了win7+mingw,只要保证文件格式是utf8就可以了,中文可以直接使用,没有什么乱码问题。
回复 支持 反对

使用道具 举报

累计签到:21 天
连续签到:1 天
2013-11-27 11:56:49 显示全部楼层
尝试下来,Qt5.1.1 VS2010环境下的解决方法:
  1. 在Qt Creator中,Tools->Options->Text Editor->Behavior中设置:Default encoding为UTF-8、UTF-8 BOM为Keep if Already Present
  2. 在源代码编辑界面鼠标邮件快捷菜单中点击Add UTF-8 BOM on Save
  3. 利用QStringLiteral产生中文,例如:ui->pushButton->setText(QStringLiteral(“简体中文"));
  4. 编译运行应该就可以看到正常的中文了
回复 支持 反对

使用道具 举报

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

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