我在CentOS 7上构建了一个QT项目。我已将/etc/locale.conf更改为' zh_CN.gb2312'。
当我打开QFiledialog时没有' DontUseNativeDialog'要选择一个文件,文件名在对话框中显示乱码,甚至我在main()中添加以下代码:
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));
如何解决这个问题? 我的应用程序不仅支持英语或中文,还应该与linux中的所有语言兼容。 QT必须能自动检查系统语言,但如何?
谢谢。
答案 0 :(得分:0)
这可能是秘密:
当我在UTF-8环境中并命名文件时,文件名以utf-8样式存储。当我改为CGB2312环境时,utf-8在GB2312中由glibc解释,因此凌乱的代码出现了。凌乱的代码在QT QFiledialog中不是没有,但在bshell中也是如此。 QT原生GUI窗口和bshell都基于glibc,对吗?
可能是gnome特别对待它,它足够聪明地解释文件名的编码,因此在gnome文件浏览工具包中,名称显示在UTF-8和GB2312环境下。