詳談c++跨平臺編碼的問題
最近要將一個(gè)windows下的項(xiàng)目放到樹莓派上,以便充分利用帶寬資源,使其以夜繼日的工作
在此記錄一下編碼問題和方案
在windows下,現(xiàn)在用的vs2015,創(chuàng)建的代碼文件默認(rèn)編碼是ANSI,windows特有的概念,本地編碼,結(jié)合實(shí)際情況就是gb232
vs在調(diào)試的時(shí)候,方便查看的有ANSI編碼和unicode編碼
在代碼中
以"你好,world"表示ANSI編碼字符串
L"hello,世界"表示unicode編碼字符串
以上兩種表達(dá)方式,不受代碼文件本身的編碼方式影響
對于linux編程,代碼文件默認(rèn)編碼是utf8
在代碼中
以"你好,world"表示的字符串,編碼以此文件的編碼為準(zhǔn)
對于L"hello,世界",本人未測試
對于代碼中沒有非ancii編碼字符的源碼文件,ANSI和utf8都沒什么問題
但如果出現(xiàn)中文,就出現(xiàn)了各種問題,針對上面的那些特性,采取了以下解決方案
源代碼文件統(tǒng)一utf8編碼,對于vs有一個(gè)插件可用 ForceUTF8
代碼中的常量字符串統(tǒng)一為L"hello,世界"的unicode編碼方式
對于各種接口參數(shù)和返回值,盡量給成unicode
對于打印輸出,盡量給成utf8編碼
同時(shí),為了方便操作,給出utf8和unicode操作宏,方便utf8和unicode的字符串編碼轉(zhuǎn)換
以上這篇詳談c++跨平臺編碼的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
全局變量與局部變量在內(nèi)存中的區(qū)別詳細(xì)解析
以下是對全局變量與局部變量在內(nèi)存中的區(qū)別進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-10-10C語言常用庫函數(shù)的使用及模擬實(shí)現(xiàn)詳解例舉
C語言庫函數(shù)是把自定義函數(shù)放到庫里,是別人把一些常用到的函數(shù)編完放到一個(gè)文件里,供程序員使用,下面讓我們一起來詳細(xì)了解它2022-04-04深入探討:main函數(shù)執(zhí)行完畢后,是否可能會再執(zhí)行一段代碼?
本篇文章是對main函數(shù)執(zhí)行完畢后,是否可能會再執(zhí)行一段代碼,進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05