• 3889阅读
  • 8回复

[提问]Qt4到Qt5中文乱码问题 [复制链接]

上一主题 下一主题
离线huihui520
 

只看楼主 倒序阅读 楼主  发表于: 2018-04-08
请教前辈们一个关于Qt4.8升级Qt5.8 遇到的一个中文乱码问题
我在main 函数中设置了编码为 codecForLocale() 但以前的代码中的中文如(“你好”),显示就完全乱码了  fromLocal8Bit是可以解决 但代码量太大 并且还有如 QString == “你好” 这中判断 量太大

请问下 没有可以不用去挨着改代码中中文的解决办法吗 对了 编译器是vs2015 默认保存格式不是Unicode
离线yanwuyue

只看该作者 1楼 发表于: 2018-04-08
Qt 要中文编码必需UTF-8
离线george1978

只看该作者 2楼 发表于: 2018-04-09
fromtolocal8bit
离线huihui520

只看该作者 3楼 发表于: 2018-04-09
回 yanwuyue 的帖子
yanwuyue:Qt 要中文编码必需UTF-8 (2018-04-08 22:22) 

VS2015那个坑货 不能自己设置编译为UTF-8格式文件
离线huihui520

只看该作者 4楼 发表于: 2018-04-09
回 george1978 的帖子
george1978:fromtolocal8bit (2018-04-09 10:13) 

这个是可以 但项目会改动太大 不适合 谢谢哈
离线九重水

只看该作者 5楼 发表于: 2018-04-09
又一个血淋淋的教训……
很多年前,编程(当然包括QT)我都倡导不要在代码写非ascii字符,tr就很好,然后多国语言直接提取翻译加载即可。
离线yanwuyue

只看该作者 6楼 发表于: 2018-04-09
Qt5只认UTF-8,但是VS编译器是根据本地语言编译的,代码里面还要加一句
#if defined(_MSC_VER) && (_MSC_VER >= 1600)
#pragma execution_character_set("utf-8")
#endif
离线huihui520

只看该作者 7楼 发表于: 2018-04-10
回 yanwuyue 的帖子
yanwuyue:Qt5只认UTF-8,但是VS编译器是根据本地语言编译的,代码里面还要加一句
#if defined(_MSC_VER) && (_MSC_VER >= 1600)
#pragma execution_character_set("utf-8")
#endif (2018-04-09 17:16) 

这样是可以的 但文件太多 不好加啊 能不能直接在预处理加命令行呢 前辈知道vs2015怎么加不呢
离线dbzhang800

只看该作者 8楼 发表于: 2018-04-10
1. 确保VS2015升级到Update2
2. 所有文件都保存成UTF8(不需要加BOM)
3. 编译选项中添加 /utf-8

快速回复
限100 字节
 
上一个 下一个