解決 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
2
add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
add_compile_options("$<$<CXX_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"


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM