Qt Creator 中的开发控制台编码错误

3

当我的项目出现任何错误时,看起来像这样:

enter image description here

如何解决?我指的是编码问题,不是错误。


是的,我犯了一个错误。我想说的是Qt Creator。我没有找到任何可能影响编码的选项。尝试切换语言,但它没有起作用。 - Sugar
QtCreator v3.0.0,Windows 7。不明白你所说的“重现问题”的意思。我是应该通过命令行启动一些qt代码,还是运行标准命令就足够了? - Sugar
只需通过cmd.exe或Visual Studio提示运行您的代码即可。 - László Papp
让我们在聊天中继续这个讨论:http://chat.stackoverflow.com/rooms/43869/discussion-between-sugar-and-laszlo-papp - Sugar
1
这是Qt Creator的一个bug。不幸的是,它仍未解决... - Melebius
显示剩余4条评论
4个回答

3
如果您在Qt Creator中使用Visual Studio编译器,那么编译器的消息将以DOS(866)编码显示。需要设置正确的编码Windows CP1251。我使用这里的特殊版本jom.exe。
x86版本:jom.exe x86 x64版本:jom.exe x64 将实用程序复制到qt/bin中。然后选择“工具”->“选项”,找到“使用jom而不是nmake”的选项。来源

3
  • 前往工具 -> 选项 -> 工具包。
  • 选择使用的工具包。
  • 选中“强制使用 MSVC UTF-8 编译器输出”复选框。

1
太好了!它对我起作用了。现在文本可读了。我认为这比使用自定义工具(如接受答案中提出的)或在pro文件中硬编码编码更好(其他人可能在其系统中使用不同的编码)。 - Ivan P.

2

只需编辑.pro文件即可解决问题。当继承控制台时,控制台代码页也会被继承。因此,只需更改make命令的控制台代码页即可。这可以通过(稍微)高级的qmake来完成。

将以下内容插入您的.pro文件中。我已经验证过它可以工作。

QMAKE_EXTRA_TARGETS += before_build makefilehook

makefilehook.target = $(MAKEFILE)
makefilehook.depends = .beforebuild

PRE_TARGETDEPS += .beforebuild


before_build.target = .beforebuild
before_build.depends = FORCE
before_build.commands = chcp 1251

如果您更喜欢俄语,请阅读我博客上这篇文章


-1

更好的解决方案在这里,因为不仅jom可以输出这样的消息,而且link、nmake、copy等也可以: http://codedchaos.blogspot.com/2012/09/qt-creator-windows.html

需要使用命令:

chcp scode_page

简单示例:

chcp 1251

要永久更改代码页注册表,可以使用HKCU\Software\Microsoft\Command Processor。要运行Qt Creator,您可以创建以下批处理文件:

@echo off
reg add "HKCU\Software\Microsoft\Command Processor" /v AutoRun /t reg_expand_sz /d "chcp 1251 1>nul" /f
C:\Qt\qtcreator-3.6.0\bin\qtcreator.exe
reg delete "HKCU\Software\Microsoft\Command Processor" /v AutoRun /f

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接