編譯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 ,點擊確定,問題就解決了。
[ZT]去掉VC2005中煩人的C4819警告
這個警告雖然沒有什么影響,但是非常討厭。去掉這個警告的方法有以下幾種:
(1)轉換Code文件為Unicode格式;
(2)在“項目”-> “屬性” -> “配置屬性” -> “C/C++” -> “高級”的“禁用特定警告”中添加相應的警告編號:4819;
(3)找出非Unicode格式的文件,然后在該文件的開始處加入下面的語句:
# pragma warning (disable:4819)
(4)打開出現這個警告的文件, 用VS2005的“查找替換”功能,打開“允許正則表達式”選項,選擇“當前窗口”,查找替換 /n 為 /n , 然后整個世界就清凈了。(查找的 /n 是跨平台的回車,替換的 /n 卻是當前代碼頁的回車了)