前段時間為了做人工智慧,回家重新惡補了一下c語言,使用的工具code blocks 17.12;
明明寫好了**,執行也沒問題
#include #include #include #include #pragma comment(lib,"winmm.lib")
int main()
重新開啟中文部分就是亂碼;
查了資料,顯示預設情況下,是儲存為windows本地編碼的,也就是windows-936字符集,也就是gbk編碼。
但是很神奇的是,gcc編譯器預設編譯的時候是按照utf-8解析的。你存成gbk,但是當成utf-8解析,這還能編譯通過,這才有鬼了,所以這兩個地方編碼不統一好,編譯的時候報錯:error: converting to execution character set: illegal byte sequence,你根本連通過編譯的可能性都沒有!
其實要解決這個問題很簡單,編寫code::blocks的人只需要在呼叫編譯器之前檢測一下原始檔是什麼編碼,然後就自動讓編譯器用什麼編碼進行解釋,問題就解決了。只是很可惜,code::blocks編寫的人可能還沒有這麼做,或許是對本地化認識不夠吧,也可能是覺得沒必要吧?
解決方案:
檢視編輯器-編碼設定
修改原始檔儲存編碼在:settings->editor->gernal settings 看到右邊的encoding group box了嗎?如下圖所示:
use encoding when opening files:這個表示開啟檔案用的格式,第一次儲存檔案的時候也會用這個格式。
as default encoding:表示設定為檔案預設儲存和開啟編碼格式
注意,要先設定好,然後儲存檔案,才有效。如果你已經儲存了檔案,無論你怎麼修改這個設定,也不會改變你檔案的格式了。你的檔案還是保持第一次儲存的時候的格式。
所以,如果遇到無法生效,只能先設定好格式,再重新建檔案了。
參考:
codeblocks執行顯示中文亂碼
環境 1.windows10 英文版 2.codeblocks ide軟體 當在文件中輸入漢字可以顯示出來,但是編譯執行時候會發現終端視窗顯示中文亂碼。需要檢查以下幾個內容 1.cmd視窗的配置引數 檢查cmd的defaults中的default code page是否存在?是否選用gbk。如果沒有...
webView loadData 中文亂碼問題
使用 loaddata方法是中文部分會出現亂碼,即使指定 utf 8 gbk gb2312 也一樣。webview.getsettings setdefaulttextencodingname utf 8 設定預設為utf 8 text html utf 8 api提供的標準用法,無法解決亂碼問題 ...
mysql jsp servlet 中文亂碼問題。
google一下。你可以找一大堆解決方案。但是我覺得都沒有從根本上解決問題。是不是?我覺得要想根本解決。最主要的方法是統一編碼方案。說出來很簡單。原因也很簡單。但你真的做到了嗎。首先不論你寫的是jsp servlet html 等都必須顯示標明contenttype為utf 8 強烈推薦是utf 8...