第一次這么用,上來字符編碼就炸了,不出意外 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"