1. 程式人生 > >warning C4819 解決方案 warning C4819: The file contains a character that cannot be represented in the cu

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系統區域為英文。如圖


參考文章:https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/3DV8Huz5C0MWarning C4819: The file contains a character that cannot be represented in the current code page (932). Save the file in Unicode format to prevent data loss When you see this message, you may use Chinese, Japanese or Korean Windows, and uses DBCS code page. To avoid this warning, you need to change your Windows system code page to English or another SBCS code page. You can do this by Control Panel - Regions - Administrative - Language for non-Unicode programs. Note: chcp 65001 in cmd.exe doesn't solve this issue. Note: If you use Bitlocker, you may want to back up your bitlocker key before changing system code page.