解决 CLion + MSVC 下的字符编码问题
第一次这么用,上来字符编码就炸了,不出意外 log 中会出现如下内容
code
1
|
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
中加入如下内容即可
cmake
1
|
add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
|
括号中表达式语法具体参见 cmake-generator-expressions(7)
#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"
摘抄自网络,便于检索查找。