warning C4819 解決方案 warning C4819: The file contains a character that cannot be represented in the cu
原文轉載於:http://blog.csdn.net/xiaoting451292510/article/details/17548957
一、
warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
中文意思是:該檔案包含不能在當前內碼表中表示的字元,請將檔案儲存為Unicode格式,以防止資料丟失。
一般來說,這個警告沒有什麼影響。要想去掉這個警告的方法有:
(1)轉換Code檔案為Unicode格式;
(2)在Project -> Properties -> Configuration Properties -> C/C++ -> Advance 的 Disable Specific Warnings 中新增相應的警告編號:4819;
(3)或找出不符合Unicode格式的檔案,然後在該檔案的開始處加入下面的語句: # pragma warning (disable:4819)
(4)哪個檔案出現這個警告錯誤,開啟它, 用VS2005的查詢替換功能,開啟允許正則表示式選項,選擇當前視窗,查詢替換 \n 為 \n , 然後,這個世界就清淨了。原因:查詢的 \n 是跨平臺的回車,替換的 \n 卻是當前內碼表的回車了。
二、
編譯VC++程式的時候出現如下提示警告:
warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
因為只是一個warning,不影響正常編譯,所以並沒有引起大家多大的關注。我一開始的時候也是如此。但是後來出現的次數多了,發現這個警告和在程式Debug的時候
無法停在斷點,刷刷刷就過去了根本無法進行Debug。而罪魁禍首就是這個warning,改正了這個warning就能進行Debug了。
下面講述我是怎麼消除這個警告的。
這個警告的意思是:在該檔案中有一個或多個字元不是Unicode字元!要求把這個字元變成Unicode字元。
難題:在編譯資訊裡並沒有提示是哪個字元,或者是在哪一行裡出現的該字元。查詢起來非常的難,甚至是不可能的任務!
我在網路上找了好多資料都沒有找到解決方法。因為大家都不注意這個不影響編譯的警告。後來在一個國外的網站上找到了解決的方法。很簡單,這個方法根本不需要知道具體是哪個字元在搗鬼!
解決方法:打開出現warning的檔案,Ctrl+A全選,然後在檔案選單:file->advanced save options ,在彈出的選項中選擇新的編碼方式為:UNICODE codepage 1200 ,點選確定,問題就解決了。
附:
本人是在windows環境下編譯chromium時遇到該問題
原因:windows系統區域設定為中文,使用DBCS(A double-byte character set) code pages。
解決方法:修改windows系統區域為英文。如圖