詳談c++跨平臺(tái)編碼的問(wèn)題
最近要將一個(gè)windows下的項(xiàng)目放到樹(shù)莓派上,以便充分利用帶寬資源,使其以夜繼日的工作
在此記錄一下編碼問(wèn)題和方案
在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á)方式,不受代碼文件本身的編碼方式影響
對(duì)于linux編程,代碼文件默認(rèn)編碼是utf8
在代碼中
以"你好,world"表示的字符串,編碼以此文件的編碼為準(zhǔn)
對(duì)于L"hello,世界",本人未測(cè)試
對(duì)于代碼中沒(méi)有非ancii編碼字符的源碼文件,ANSI和utf8都沒(méi)什么問(wèn)題
但如果出現(xiàn)中文,就出現(xiàn)了各種問(wèn)題,針對(duì)上面的那些特性,采取了以下解決方案
源代碼文件統(tǒng)一utf8編碼,對(duì)于vs有一個(gè)插件可用 ForceUTF8
代碼中的常量字符串統(tǒng)一為L(zhǎng)"hello,世界"的unicode編碼方式
對(duì)于各種接口參數(shù)和返回值,盡量給成unicode
對(duì)于打印輸出,盡量給成utf8編碼
同時(shí),為了方便操作,給出utf8和unicode操作宏,方便utf8和unicode的字符串編碼轉(zhuǎn)換
以上這篇詳談c++跨平臺(tái)編碼的問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
全局變量與局部變量在內(nèi)存中的區(qū)別詳細(xì)解析
以下是對(duì)全局變量與局部變量在內(nèi)存中的區(qū)別進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-10-10C語(yǔ)言常用庫(kù)函數(shù)的使用及模擬實(shí)現(xiàn)詳解例舉
C語(yǔ)言庫(kù)函數(shù)是把自定義函數(shù)放到庫(kù)里,是別人把一些常用到的函數(shù)編完放到一個(gè)文件里,供程序員使用,下面讓我們一起來(lái)詳細(xì)了解它2022-04-04深入探討:main函數(shù)執(zhí)行完畢后,是否可能會(huì)再執(zhí)行一段代碼?
本篇文章是對(duì)main函數(shù)執(zhí)行完畢后,是否可能會(huì)再執(zhí)行一段代碼,進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05C語(yǔ)言實(shí)現(xiàn)三子棋小游戲的示例代碼
這篇文章主要介紹了如何通過(guò)C語(yǔ)言實(shí)現(xiàn)三子棋小游戲,三子棋小游戲的實(shí)現(xiàn)主要依賴于循環(huán)語(yǔ)句、函數(shù)和數(shù)組,感興趣的小伙伴可以嘗試一下2022-10-10Linux下C語(yǔ)言實(shí)現(xiàn)C/S模式編程
這篇文章主要為大家詳細(xì)介紹了Linux下C語(yǔ)言實(shí)現(xiàn)C/S模式編程的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-01-01c++11中regex正則表達(dá)式示例簡(jiǎn)述
這篇文章主要給大家介紹了關(guān)于c++11中regex正則表達(dá)式的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用c++11具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11