CLion控制台乱码:
控制台Messages乱码(230914):
Help->Edit Custom VM Options...中添加下列代码:
-Dconsole.encoding=UTF-8
-Dfile.encoding=UTF-8
重启CLion,运行正常。
如果以上还无法解决乱码:
以下步骤:JetBrains 提供了官方解决方案,如果是使用 MinGW,先按图所示操作,把编码方式改为 GBK,VSCode 在使用 MinGW 时,也需要在配置文件中设置编码方式为 GBK,才能正常显示中文。
warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
原因是 CLion 默认使用 UTF-8 编码,MSVC 继承了 MS 家族的一贯传统,除非明确指定否则要么 UTF-8 with BOM 要么当前代码页。
解决办法是加上命令行开关就行了: \utf-8 或者 source-charset:utf-8 /execution-charset:utf-8 参见MSVC文档>>
默认创建的项目是 CMake 的,在 CMakeList.txt 中加入如下内容即可:
add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
必须位于 add_executable(……) 之前
或者
-D CMAKE_CXX_FLAGS="/utf-8"
cmake_minimum_required(VERSION 3.25)
project(CppGuiProgrammingWithQt4InCLion)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_PREFIX_PATH "C:/ProgramFiles/Qt/5.15.2/msvc2019_64/lib/cmake")
find_package(Qt5 COMPONENTS
Core
Gui
Widgets
REQUIRED)
// 编码设置。
add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
add_executable(CppGuiProgrammingWithQt4InCLion main.cpp ch14/controller.cpp ch14/thread.cpp ch14/thread.h ch14/thread-dialog.cpp ch14/thread-dialog.h ch14/worker.cpp ch10/currency-model.cpp ch10/currency-model.h ch10/show-model.cpp ch10/show-model.h ch10/team-leaders-dialog.cpp ch10/team-leaders-dialog.h ch07/ticker.cpp ch07/ticker.h ch07/ticker-from-left-to-right.cpp ch07/ticker-from-left-to-right.h ch06/find-file-dialog.cpp ch06/find-file-dialog.h ch06/mail-client.cpp ch06/mail-client.h ch06/preference-dialog.cpp ch06/preference-dialog.h ch05/plot-settings.cpp ch05/plot-settings.h ch04/main-window.cpp ch04/main-window.h ch02/employee.cpp ch02/employee.h ch02/find-dialog.cpp ch02/find-dialog.h ch02/go-to-cell-dialog.cpp ch02/go-to-cell-dialog.h ch02/sort-dialog.cpp ch02/sort-dialog.h ch10/track.cpp ch10/track.h ch10/track-editor.cpp ch10/track-editor.h ch10/track-delegate.cpp ch10/track-delegate.h ch10/track-model.cpp ch10/track-model.h)
target_link_libraries(CppGuiProgrammingWithQt4InCLion
Qt5::Core
Qt5::Gui
Qt5::Widgets
)
if (WIN32 AND NOT DEFINED CMAKE_TOOLCHAIN_FILE)
set(DEBUG_SUFFIX)
if (MSVC AND CMAKE_BUILD_TYPE MATCHES "Debug")
set(DEBUG_SUFFIX "d")
endif ()
set(QT_INSTALL_PATH "${CMAKE_PREFIX_PATH}")
if (NOT EXISTS "${QT_INSTALL_PATH}/bin")
set(QT_INSTALL_PATH "${QT_INSTALL_PATH}/..")
if (NOT EXISTS "${QT_INSTALL_PATH}/bin")
set(QT_INSTALL_PATH "${QT_INSTALL_PATH}/..")
endif ()
endif ()
if (EXISTS "${QT_INSTALL_PATH}/plugins/platforms/qwindows${DEBUG_SUFFIX}.dll")
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/platforms/")
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
"${QT_INSTALL_PATH}/plugins/platforms/qwindows${DEBUG_SUFFIX}.dll"
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/platforms/")
endif ()
foreach (QT_LIB Core Gui Widgets)
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
"${QT_INSTALL_PATH}/bin/Qt5${QT_LIB}${DEBUG_SUFFIX}.dll"
"$<TARGET_FILE_DIR:${PROJECT_NAME}>")
endforeach (QT_LIB)
endif ()