QT学习笔记(6)解决中文编译不通过问题 - 好困啊 - 博客园
    Monday, April 6, 2020
    2:48 PM
    QT学习笔记(6)解决中文编译不通过问题
    一、环境配置
    win10 64位系统、VS2013环境、QT5.6.2版本、QT Creator软件
    我使用QT Creator进行程序的编译运行。
    二、问题提出
    我在使用QT Creator进行程序编译运行时,如果字符串的类型是英文则没有问题,但是如果是中文,则会报 C2001:常量中有换行符 的错误。
    三、错误原因
    (1)在QT中,默认的编码是Unicode,我们书写的代码文件被强制转换为utf8,但是,在简体中文版的Windows操作系统中,默认编码却是GBK。
    Qt 的 字 符 犏 码  utf8  简 体 中 文 Win 统  G BK
    (2)因此,在QT编译程序时,如果代码含有特定中文字符,QT的编译器就会发生误判,向我们报告错误”常量中有字符串”。
    •widget  : : (31 dget :  QW1dgez  (new :  • new , ;  IS  delete ui;  (936)  C2C•0'.  . Unicode widget-cpp_
    (3)当然,如果你使用别的一些中文字符,恰巧该字符编码不含这些特定字符,则编译时不会报错,但是程序运行时中文字符却往往不能正常显示。
    QWždget ,
    四、解决方法
    1、折中的解决方法:更改设置或调整代码,避免编译错误
    (1)更改设置
    打开QT Creator,店家菜单栏“工具” 》》“选项”
    Analyze  pro  widget. h  man cpp  cpp  Locate  Text Editing M  QML/JS  Form Editor  Ctrl+K  dget . h
    在“文本编辑器”》》“行为”选项卡中,将文件编码更改为“UTF-8”,并且选择“如果编码是UTF-8则添加”
    0
    (2)代码调整
    或者,在代码中用QString.toLocal8Bit( ) 将 Unicode 编码转换为本地系统编码
    1 ude  r2W±dget  btn —  delete ui;
    2、推荐的解决方法:将本地编译转换为Unicode交由QT处理
    (1)使用以上方法之后,虽然编译时将不会报“常量中有换行符”错误,但不能保证中文字符能正确显示。
    QSt:ing  ben
    (2)若想字符得以正常显示,则可以使用 QString::fromLocal8Bit 来将本地字符编码转换为 Unicode 形式的 QString。毕竟,在这个越来越全球化的时代,Unicode 才是王道。
    ben QPu3hButton , ;
    参考:https://jingyan.baidu.com/article/67508eb42997949cca1ce49e.html
    分类: QT
    好文要顶 关注我 收藏该文
    QT学习笔记(6)解决中文编译不通过问题 - 好困啊 - 博客园 - 图9
    计算机生成了可选文字:
    计算机生成了可选文字:
    好困啊
    关注 - 9
    粉丝 - 2
    +加关注
    1
    0
    « 上一篇: QT学习笔记(5) 菜单栏、工具栏、窗口、对话框
    » 下一篇: QT学习笔记(7) QT中的事件系统
    posted @ 2017-08-28 14:34 好困啊 阅读(1714) 评论(1) 编辑 收藏
    已使用 Microsoft OneNote 2016 创建。