VS的中文亂碼問題


 

中文亂碼的原因:

1. 中文在不同編碼格式下, 存儲的方式不一樣.

2. 如果程序是A編碼方式編譯運行的,但是控制台卻是以B編碼方式來顯示, 就會出現亂碼.

3. vs的控制台默認編碼是GB2312,編號號是836

注意:GBK編碼是兼容GB2312,一般描述GBK常常就是指BG2312

  如果源代碼文件的編碼如果是其他編碼格式, 就會導致中文亂碼.

 

正常場景:

vs中新建文件時,該文件默認都是GB2312編碼.

因為控制台默認也是GB2312編碼,所以一般情況下,都不會出現中文亂碼.

 

錯誤場景:

1. 直接在項目中導入了其他已經創建好的源代碼文件,

如果該文件不是BG2312編碼, 而且含有中文的話, 就必定會出現中文亂碼.

2. 從其他文件中復制代碼到vs的文件中, 也可能導致編碼錯亂.

3. 網絡編程中, 和服務器交互通信, 兩端的編碼很可能不同.

  我們的黑客攻擊系統的服務端木馬, 就是UTF-8編碼格式的.

 

解決方案一修改文件的編碼

修改源代碼文件的編碼格式”, 使其和控制台的編碼格式保持一致.

控制台的編碼格式默認是936

 

代碼文件的編碼格式,可以通過vs很方便的修改:

先用vs打開對應的文件, 然后如下操作:

 

 

如果控制台的編碼和程序的編碼一致,還是有中文亂碼,就需要修改控制台的屬性,

右擊控制台標題欄,選擇“屬性”,勾選“使用舊版控制台”

然后再重新運行。

 

解決方案二強制指定文件執行

 

不修改文件的編碼, 而是直接指定程序執行時使用的編碼, 使其和運行程序的控制台的編碼一致.

#pragma execution_character_set("gbk")

 

解決方案三修改控制台的編碼格式

修改vs控制台的編碼, 使其和源代碼的編碼保持一致.

修改注冊表, 可以修改控制台的編碼格式.

 

注意:

不建議使用該方式.

因為, 把控制台的默認編碼改為其他編碼后, 在該控制台輸入中文, 很可能導致輸入的中文無法識別.

vs2010中存在該問題.

 

解決方案四對數據進行編碼轉換

適用於: 服務器端和客戶端, 或多個客戶端之間的編碼不一致時.

1) 收到對方的其他編碼數據時, 先使用特定的接口來進行編碼轉換.

發送本地數據給對方之前, 先使用特定的接口來進行編碼轉換.


免責聲明!

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



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