<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    修改VISUAL STUDIO EXPRESS 2012新建C++文件編碼

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接
    • 本站文章除注明轉載外,均為本站原創或者翻譯。
    • 本站文章歡迎各種形式的轉載,但請18歲以上的轉載者注明文章出處,尊重我的勞動,也尊重你的智商;
    • 本站部分原創和翻譯文章提供markdown格式源碼,歡迎使用文章源碼進行轉載;
    • 本文標題:修改Visual Studio Express 2012新建C++文件編碼
    • 本文鏈接:http://zengrong.net/post/1900.htm


    2013-12-03 更新:增加關于UTF-8(BOM)的說明

     


    我突然發現Visual Studio Express 2012(后簡稱為VS)建立的源文件是cp936(GB2312)編碼,這個以后在Linux和Mac下面編譯起來可能會有麻煩。

    初步解決

    于是,我嘗試將已有項目中的文件改成了UTF-8格式,并設置保存格式為UTF-8,大概有這樣幾步:

    1. “工具-選項-環境-文檔-不能以代碼頁的編碼格式保存數據時將文檔保存為Unicode”
    2. “工具-選項-文本編輯器-常規-自動檢測不帶簽名的UTF-8編碼”
    3. 在文件打開的情況下,選擇“文件-高級保存選項”,設置編碼和行尾
    4. 在另存文件的時候選擇“編碼保存”

    請原諒我使用中文描述界面,因為當時安裝VS的時候手賤選了簡中界面,然后無論如何都沒法安裝英文語言包……

    上面的1、2兩項好像沒什么用,關鍵是第3項。

    根據我的習慣,將編碼設置為“Unicode(UTF-8無簽名) – 代碼頁 65001”,將行尾設置為“Unix(LF)”。

    然后測試保存,再用Vim打開文件查看編碼,發現文件確實保存為UTF-8編碼了。

    但是(什么事情都有但是),當我重新打開這個文件的時候,重新查看“高級保存選項”,發現編碼又變成了“簡體中文(GB2312)-代碼頁936”。

    屆時維尼奧神馬!!!

    第二步解決

    我猜測,是由于VS無法識別不帶簽名的UTF-8編碼文件造成的。

    要將一個文本文件被作為UTF-8編碼對待,可能需要以下幾個條件(或者之一):

    1. 文件中包含UTF-8簽名;
    2. 文件中包含UTF-8編碼的字符(不能全是ASCII可以解釋的字符);
    3. 編輯器優先以UTF-8編碼來解析。

    例如我對Vim的設置,就是將UTF-8偵測放在優先的位置

    那么,讓我來驗證一下猜測是否正確。

    在“高級保存選項”中將編碼設置為“Unicode(UTF-8帶簽名) – 代碼頁 65001”,然后保存。重新打開,編碼沒有變化。

    這說明我的猜測是正確的。

    那么,再來驗證一下上面條件的第2項是否正確。

    在“高級保存選項”中將編碼設置為“Unicode(UTF-8無簽名) – 代碼頁 65001”,加入一些中文內容,然后保存。重新打開,編碼沒有變化。

    那么,現在我可以斷定,VS可以正常識別UTF-8編碼,但我需要滿足上面的條件1或者2。

    需要注意的是,即使是已有的項目中,所有文件都已經是UTF-8編碼(例如cocos2d-x的項目模版),但使用VS打開并進行保存后,原來的文件編碼都會變成CP936。這是因為原來的模版文件中的文件是UTF-8(無簽名)的。至于解決方法,參考上面了。

    新建C++文件的編碼

    修改下面這幾個模版文件的編碼和行尾值,在VS中新建的cpp或者h文件,默認就是UTF-8編碼了(路徑自己改):

    • c:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\VCProjectItems_WDExpress\newc++file.cpp
    • c:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\VCProjectItems_WDExpress\hfile.h
    • c:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\VCNewItems_WDExpress\newc++file.cpp
    • c:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\VCNewItems_WDExpress\hfile.h

    這些文件默認都是0字節的空文件,因此建議在其中加入一些注釋,并將文件編碼設置為UTF-8(帶簽名),行尾設置為Unix格式即可。

    如果希望修改更多的東西,比如wizard之類的,可以看看這篇文章:VS2008中自定義C++工程模板與修改新建文件默認編碼的辦法

    最后的問題

    這種修改默認文件模版為 UTF-8(帶簽名) 的方法,其實是不被推薦的,原因是這本來是微軟一廂情愿的做法。而我們的項目本來就應該跨平臺,這種文件在Mac平臺下編譯,可能會有問題。

    詳見這篇:「帶 BOM 的 UTF-8」和「無 BOM 的 UTF-8」有什么區別?網頁代碼一般使用哪個?

    但是,由于我 使用Eclipse+CDT開發Cocos2d-x(不用Visual Studio) 的嘗試失敗了,所以好像只能被迫接受這種現象了。


    關聯文章

    1. 在Visual Studio Express 2012中創建一個cocos2d-x的win32項目
    2. Flash Builder安裝和卸載錯誤的解決辦法
    3. [譯]升級Flash Builder 4.7中的AIR SDK
    4. Cocos2d-x VS2012 HelloCpp調試
    5. 用swfobject實現FlashPlayer8的快速安裝(Express Install)
    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全