青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

醬壇子

專(zhuān)注C++技術(shù) 在這里寫(xiě)下自己的學(xué)習(xí)心得 感悟 和大家討論 共同進(jìn)步(歡迎批評(píng)?。。。?/p>

  C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
  66 Posts :: 16 Stories :: 236 Comments :: 0 Trackbacks

公告

王一偉 湖南商學(xué)院畢業(yè) 電子信息工程專(zhuān)業(yè)

常用鏈接

留言簿(19)

我參與的團(tuán)隊(duì)

搜索

  •  

積分與排名

  • 積分 - 389905
  • 排名 - 64

最新隨筆

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

在windows下面編程,我們通常都知道unicode這個(gè)概念,如果一個(gè)程序是unicode的,那么他將調(diào)用

unicode的api。這個(gè)時(shí)候,所有傳遞給api的字符串參數(shù)都要是unicode的.如果使用C的風(fēng)格,是很簡(jiǎn)單的

,字符串全部由char* str 轉(zhuǎn)變成TCHAR* str,使用的crt函數(shù)(其實(shí)也是api)時(shí)調(diào)用_tcslen類(lèi)的函數(shù)族就

可以了。

在討論其它問(wèn)題前要先明確一個(gè)概念:unicode 與 utf-8編碼,utf-16編碼是兩個(gè)不同類(lèi)別的術(shù)語(yǔ)。

unicode對(duì)一個(gè)字符提供了一個(gè)唯一的編碼(參看下面的資料,關(guān)于UCS-2與UCS-4)
假設(shè)"中"這個(gè)字符的編碼是0x34 0x34(我亂寫(xiě)的),utf-8對(duì)其編碼,得到的是 0xE3 0x90 0xB6 需要3byte

的空間進(jìn)行存儲(chǔ)。不同的unicode碼經(jīng)過(guò)utf-8編碼后會(huì)得到變長(zhǎng)的結(jié)果.比如說(shuō)'a'經(jīng)過(guò)utf-8編碼后得到

的是和ascii碼相同,只占1個(gè)byte.對(duì)unicode使用不同的方法編碼,可以有效的節(jié)約存儲(chǔ)空間(如果選擇了

錯(cuò)誤的編碼,會(huì)浪費(fèi)空間).

中的unicode(UCS-2)值和編碼后的結(jié)果
unicode???????????????????????????? utf-8??????????
00110100 00110100????? 11100011? 10010000 10110110
a的unicode值和編碼后的結(jié)果
unicode???????????????????????????? utf-8
00000000 01100001????? 01100001

這里得出的結(jié)論是utf-8,utf-16編碼是在存儲(chǔ)字符串信息前的一個(gè)選擇,而不是處理字符串的選擇.


OK,問(wèn)題回到字符串編程上來(lái)。第一個(gè)問(wèn)題,就是要選擇內(nèi)存中的字符串格式,包括自己所有需要傳遞字

符串參數(shù)的函數(shù)的參數(shù)定義。我們這里有3個(gè)選擇,char*(ASCII string),unsigned short*(UCS2

string,windows下的unicode),unsigned long*(UCS4 string,真正的unicode支持)。windows下的api是不

支持UCS4的,所以在windows平臺(tái)下最好只做前2個(gè)的選擇。類(lèi)似于windows的TCHAR定義,我們可以做這樣

的定義
#ifdef _UCS2
#define TCHAR unsigned short
#else
#ifdef _UCS4
#define TCHAR unsigned long
#else
#define TCHAR char
#endif
#endif
然后有一個(gè)問(wèn)題,如果在程序中需要使用一個(gè)預(yù)定義的字符串,比如說(shuō)
TCHAR* str = "中國(guó)";
那么,str指向的常量字符串的編碼是ACSII string,還是UCS2 unicode string,還是UCS4 unicode

string,是取決于編譯器的。這樣就容易造成許多不易發(fā)現(xiàn)的錯(cuò)誤。這里要推薦一個(gè)string table的概念

,用如下代碼替換。
const TCHAR* str = StringTable::LoadStr(ID_HOMELOAD_NAME);
StringTable類(lèi)解析一個(gè)指定編碼的本地字符串表XML文件(可以用各種編碼存儲(chǔ)),這個(gè)文件可以使用自定

義的工具或則是各種XML編輯工具來(lái)生成。使用StringTable::SetOutPutType(enum MemStrType)來(lái)使之在

LoadStr的時(shí)候轉(zhuǎn)成各種字符串編碼。當(dāng)然,這個(gè)類(lèi)中定義了一系列的編碼轉(zhuǎn)換函數(shù),比如說(shuō)

UTF8TOASCII,UTF8TOUCS2,UTF8TOUCS4,UCS4TOUCS2,UCS4TOASCII,UCS4TOXXX,StringTalbe內(nèi)部使用UCS4作

為讀取后的字符串存儲(chǔ)格式,然后再根據(jù)StringTable::SetOutPutType指定的輸出類(lèi)型生成相應(yīng)編碼的

Table.這樣做的好處就是把這個(gè)編碼的問(wèn)題重視化,即時(shí)出現(xiàn)編碼不一致的錯(cuò)誤,也能立刻修正。

在linux下,系統(tǒng)對(duì)UCS4的支持比較好,#include<wchar.h>,里面的函數(shù)的接口都是ucs4 string.所以如果寫(xiě)跨平臺(tái)程序,肯定是要用ucs2的(UCS4windows不支持,而且可以節(jié)約內(nèi)存,但是你的程序就不是真正的UNICODE3.1 Support了,而且也不能支持國(guó)家標(biāo)準(zhǔn)GB18030).然后再調(diào)用linux的相關(guān)函數(shù)時(shí),轉(zhuǎn)化為UCS4.參考文章http://www0.ccidnet.com/tech/os/2001/07/31/58_2811.html。我懶得寫(xiě)了。



Unicode 的定義
Unicode 通常用作涉及雙字節(jié)字符編碼方案的通用術(shù)語(yǔ)。Unicode CCS 3.1 的官方稱(chēng)謂是 ISO10646-1 通

用多八字節(jié)編碼字符集(Universal Multiple Octet Coded Character Set,UCS)。Unicode 3.1 版本

添加了 44,946 個(gè)新的編碼字符。算上 Unicode 3.0 版本已經(jīng)存在的 49,194 個(gè)字符,共計(jì) 94,140 個(gè)



Unicode 編碼字符集利用了一個(gè)由 128 個(gè)三維的組構(gòu)成的四維編碼空間。其中每個(gè)組包含 256 個(gè)二維平

面。每個(gè)平面由 256 個(gè)一維的行組成,并且每個(gè)行有 256 個(gè)單元。每個(gè)單元在這個(gè)編碼空間內(nèi)對(duì)一個(gè)字

符編碼,或者被聲明為未經(jīng)使用。這種編碼概念被稱(chēng)為 UCS-4;四個(gè)八位元用來(lái)表示指定組、平面、行和

單元的每個(gè)字符。

第一個(gè)平面(第 00 組的第 00 平面)是基本多語(yǔ)言平面(Basic Multilingual Plane,BMP)。BMP 按

字母、音節(jié)、表意符號(hào)和各種符號(hào)及數(shù)字定義了常規(guī)使用的字符。后續(xù)的平面用于附加字符或其它還沒(méi)有

發(fā)明的編碼實(shí)體。我們需要這完整的范圍去處理世界上的所有語(yǔ)言;特別是擁有將近 64,000 個(gè)字符的一

些東亞語(yǔ)言。

BMP 被用作雙字節(jié)的編碼字符集,這種編碼字符集確定為 ISO 10646 UCS-2 格式。ISO 10646 UCS-2 就

是指 Unicode(并且兩者相同)。BMP,像所有 UCS 平面那樣,包含了 256 行,其中每行包含 256 個(gè)單

元,字符僅僅按照 BMP 中的行和單元的八位元在單元中被編碼。 這就允許 16 位編碼字符能夠被用來(lái)書(shū)

寫(xiě)大多數(shù)商業(yè)上最重要的語(yǔ)言。UCS-2 不需要代碼頁(yè)切換、代碼擴(kuò)展或代碼狀態(tài)。UCS-2 是一種將

Unicode 結(jié)合到軟件中的簡(jiǎn)單方法,但它只限于支持 Unicode BMP。

若要用 8 位字節(jié)表示一個(gè)多于 2^8 =256 個(gè)字符的字符編碼系統(tǒng)(character coding system,CCS),

就需要一種字符編碼方案(character-encoding scheme,CES)。


UTF-8
UTF-8 轉(zhuǎn)換格式正逐步成為一種占主導(dǎo)地位的交換國(guó)際文本信息的方法,因?yàn)樗梢灾С质澜缟纤械恼Z(yǔ)

言,而且它還與 ASCII 兼容。UTF-8 使用變長(zhǎng)編碼。從 0 到 0x7f(127)的字符把自身編碼成單字節(jié),

而將值更大的字符編碼成 2 到 6 個(gè)字節(jié)。

表 1. UTF-8 編碼
0x00000000 - 0x0000007F:? 0 xxxxxxx?
0x00000080 - 0x000007FF:? 110 xxxxx10 xxxxxx?
0x00000800 - 0x0000FFFF:? 1110 xxxx10 xxxxxx10 xxxxxx?
0x00010000 - 0x001FFFFF:? 11110 xxx10 xxxxxx10 xxxxxx 10 xxxxxx?
0x00200000 - 0x03FFFFFF:? 111110 xx10 xxxxxx10 xxxxxx10 xxxxxx 10 xxxxxx?
0x04000000 - 0x7FFFFFFF:? 1111110 x10 xxxxxx10 xxxxxx10 xxxxxx 10 xxxxxx10 xxxxxx?
posted on 2006-10-16 08:43 @王一偉 閱讀(2470) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 4. C++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美一区二区三区精品电影| 久久超碰97中文字幕| 欧美激情综合色综合啪啪| 欧美激情女人20p| 日韩亚洲在线观看| 欧美亚洲成人免费| 亚洲欧美综合一区| 牛牛影视久久网| 亚洲另类在线视频| 国产精品日韩欧美综合| 久久成人精品视频| 最新国产精品拍自在线播放| 99亚洲伊人久久精品影院红桃| 国产精品国产福利国产秒拍 | 日韩图片一区| 午夜激情综合网| 狠狠色伊人亚洲综合成人| 老司机精品久久| 亚洲视频在线观看视频| 久久婷婷国产麻豆91天堂| 亚洲黄网站在线观看| 国产精品久久久久秋霞鲁丝| 欧美在线播放| 亚洲精品视频在线播放| 久久久国产精品一区二区中文 | 亚洲免费成人av电影| 国产精品二区影院| 久久一区二区精品| 正在播放亚洲一区| 欧美激情第五页| 欧美在线免费| 日韩五码在线| 国内精品久久久久久影视8| 欧美剧在线观看| 久久国产精品99精品国产| 亚洲美女av电影| 裸体女人亚洲精品一区| 亚洲伊人网站| 亚洲精品乱码| 国产一区二区看久久| 欧美视频一区二区三区…| 久久一综合视频| 先锋影音久久| 正在播放亚洲一区| 最新中文字幕亚洲| 欧美成人有码| 久久久国产精品一区二区中文 | 亚洲福利精品| 国产视频在线一区二区| 欧美日韩亚洲国产精品| 女女同性精品视频| 久久精品国产第一区二区三区最新章节| 99精品免费| 亚洲国产另类 国产精品国产免费| 久久人人爽人人爽爽久久| 亚洲欧美成人| 亚洲午夜羞羞片| 一本久久青青| 亚洲精品一二| 亚洲精品美女| 亚洲大黄网站| 亚洲第一色在线| 狠狠色综合网| 国内精品久久久| 国产主播在线一区| 国产色产综合产在线视频| 国产精品亚洲不卡a| 国产精品美女久久久久久2018| 欧美日韩亚洲成人| 欧美性猛交99久久久久99按摩 | 欧美国产激情| 欧美88av| 欧美激情欧美狂野欧美精品| 欧美96在线丨欧| 免费短视频成人日韩| 麻豆精品在线视频| 欧美成人免费小视频| 欧美激情第六页| 亚洲国产三级网| 亚洲精品欧洲精品| 99re在线精品| 亚洲视频一区在线观看| 亚洲欧美精品在线观看| 亚洲欧美日韩网| 欧美在线中文字幕| 久久久久久久综合| 你懂的亚洲视频| 欧美精品在线观看| 欧美性生交xxxxx久久久| 国产精品白丝av嫩草影院| 国产精品青草久久久久福利99| 国产精品一区在线观看| 韩国一区二区三区美女美女秀| 亚洲人成高清| 亚洲一区二区三区激情| 久久av在线看| 免费观看国产成人| 亚洲人体1000| 亚洲欧美一区二区精品久久久| 欧美一区二区三区免费视| 久久亚洲国产精品一区二区| 欧美精品v国产精品v日韩精品| 欧美四级在线观看| 国产专区欧美专区| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲精品免费在线播放| 亚洲一级电影| 久久久久久久久综合| 欧美成人精品激情在线观看 | 国产精品成人午夜| 国内精品模特av私拍在线观看| 91久久精品美女高潮| 亚洲天堂免费观看| 狂野欧美激情性xxxx欧美| 亚洲国产小视频在线观看| 亚洲一区在线视频| 嫩草影视亚洲| 国产手机视频一区二区| 日韩一级黄色av| 久久精品视频在线| 亚洲精品系列| 久久精品亚洲国产奇米99| 欧美视频在线观看| 国产综合久久| 亚洲永久在线观看| 欧美激情视频网站| 欧美一区二区三区精品电影| 欧美日韩精品在线| 亚洲第一主播视频| 欧美在线视频播放| 亚洲精品国产无天堂网2021| 久久国产精彩视频| 国产精品稀缺呦系列在线| 日韩视频不卡中文| 乱码第一页成人| 亚洲主播在线播放| 欧美日韩亚洲激情| 91久久精品国产91久久| 久久久久91| 亚洲一区二区欧美日韩| 欧美日韩精品在线| 亚洲人成在线播放网站岛国| 久久亚洲捆绑美女| 亚洲综合色激情五月| 欧美日韩中文字幕精品| 亚洲人成毛片在线播放| 久久亚洲图片| 欧美在线三级| 国产日韩av在线播放| 亚洲主播在线播放| 日韩亚洲欧美一区| 欧美日韩国产麻豆| 亚洲精品自在在线观看| 欧美成人黑人xx视频免费观看| 欧美在线影院在线视频| 国产日韩欧美精品| 欧美一区二区精品在线| 亚洲综合三区| 国产精品一区二区久久| 亚洲欧美日韩精品久久久| 夜夜嗨一区二区| 欧美色综合天天久久综合精品| 日韩视频精品在线| 亚洲精品视频在线观看免费| 欧美交受高潮1| 一区二区久久久久久| 亚洲精品免费电影| 欧美日韩视频| 亚洲在线电影| 亚洲午夜未删减在线观看| 国产精品一区二区三区久久久| 午夜天堂精品久久久久| 亚洲一区中文| 国产亚洲成年网址在线观看| 久久美女艺术照精彩视频福利播放| 香港久久久电影| 影音先锋亚洲视频| 亚洲电影毛片| 欧美日韩天天操| 先锋影音网一区二区| 欧美在线视频二区| 在线观看日韩国产| 亚洲国产精品一区二区第一页 | 1000部国产精品成人观看| 欧美成人精品三级在线观看| 免费成人高清在线视频| 日韩性生活视频| 亚洲视频综合在线| 国产一区二区激情| 欧美激情第3页| 欧美日韩国产a| 香蕉亚洲视频| 久久综合色播五月| av成人免费观看| 亚洲欧美一区二区精品久久久| 黄色成人免费观看| 亚洲美女网站| 国产亚洲福利一区| 亚洲欧洲视频| 国产日韩欧美三级|