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

Kisser Leon

這個kisser不太冷
posts - 100, comments - 102, trackbacks - 0, articles - 0

unicode學習小結

Posted on 2007-03-15 21:19 kk 閱讀(1552) 評論(1)  編輯 收藏 引用 所屬分類: IT

學習 unicode 也有一段時間了,雖然說沒有學得很好,但是卻是學到了許多東西啊,所以稍微小結一下,免得忘了,呵呵。很早就接觸過 unicode 這個詞了。不過以前太天真了,以為 unicode 是一件非常簡單的事情,很容易就解決了。只要用 TCHAR 代替 CHAR ,在所有的字符串前面加上 TEXT ,然后在 vc 里面 Preprocessor definitions 加上 _UNICODE UNICODE OK 了。實際上,僅僅這樣,還有很多疑惑不能解決。

1、 Windows XP 完全使用 unicode 開發,那為什么在 xp 下還會有亂碼呢?

內碼的存在,內碼不兼容 unicode 。或者要解釋的不是unicode,而當前不支持該編碼。

2、 為什么有 UTF-8 16 32 ?為什么說 UTF-8 unicode 的呢? unicode 不都是 16 位的嗎?

為了兼容現在的編碼。

3、 codepage 是什么東西?為什么存在?

4、 什么是國際化、本地化?為什么國際化、本地化那么困難?

Locale 。舉個簡單的例子:不同地方的日期的顯示格式不同。

5、 DBCS 是什么咚咚?它與 UTF-8 unicode 有什么聯系?

UTF-8 是屬于 unicode 規范的,而 DBCS 不是。 UTF-8 是不定字節的(從一字節到六字節),而 DBCS 是雙字節的。 DBCS ASCII 同時存在來處理遠東的一些字符(結合 codepage 來使用, GBK Big5 range 就有交錯的),而 UTF-8 unicode 規范的實現,它包含了所有的字符。從 Windows2K 開始,從 Windows 系統的底層實現,已經全面基于 Unicode ,同時仍保證完全兼容 ANSI/DBCS 程序。

?

以下是對我這一階段學習的小結:
一、
????????????????????
什么是 unicode

Unicode provides a unique number for every character,
no matter what the platform,
no matter what the program,
no matter what the language.

歷史上有兩個組織想獨立創立單一字符集,一個是國際標準化組織( ISO )的 ISO 10646 ,另一個是由很多大企業( Apple Compaq HP IBM Microsoft Oracle 等)組成的協會組織的 unicode 1991 年前后,他們合并了雙方的工作,統一了編碼表。雖然這兩個組織都還獨立的存在,但是他們的標準是兼容的。

Unicode 協會公布的 Unicode 標準嚴密地包含了 ISO 10646-1 實現級別 3 的基本多語言面。在兩個標準里所有的字符都在相同的位置并且有相同的名字。

Unicode 標準額外定義了許多與字符有關的語義符號學,一般而言是對于實現高質量的印刷出版系統的更好的參考。 Unicode 詳細說明了繪制某些語言 ( 比如阿拉伯語 ) 表達形式的算法,處理雙向文字 ( 比如拉丁與希伯來文混合文字 ) 的算法和排序與字符串比較所需的算法,以及其他許多東西。

另一方面 , ISO 10646 標準 , 就象廣為人知的 ISO 8859 標準一樣 , 只不過是一個簡單的字符集表 . 它指定了一些與標準有關的術語 , 定義了一些編碼的別名 , 并包括了規范說明 , 指定了怎樣使用 UCS 連接其他 ISO 標準的實現 , 比如 ISO 6429 ISO 2022. 還有一些與 ISO 緊密相關的 , 比如 ISO 14651 是關于 UCS 字符串排序的 .

考慮到 Unicode 標準有一個易記的名字 , 且在任何好的書店里的 Addison-Wesley 里有 , 只花費 ISO 版本的一小部分 , 且包括更多的輔助信息 , 因而它成為使用廣泛得多的參考也就不足為奇了 .

二、 ???????????????????? UTF-8 16 32

UTF Unicode Transformation Format

首先 UCS Unicode Char Set )和 Unicode 只是分配整數給字符的編碼表 . 現在存在好幾種將一串字符表示為一串字節的方法 . 最顯而易見的兩種方法是將 Unicode 文本存儲為 2 4 個字節序列的串 . 這兩種方法的正式名稱分別為 UCS-2 UTF-16 )和 UCS-4 UTF-32 . 除非另外指定 , 否則大多數的字節都是這樣的 (Bigendian convention). 將一個 ASCII Latin-1 的文件轉換成 UCS-2 只需簡單地在每個 ASCII 字節前插入 0x00. 如果要轉換成 UCS-4, 則必須在每個 ASCII 字節前插入三個 0x00.

Unix 下使用 UCS-2 ( UCS-4) 會導致非常嚴重的問題 . 用這些編碼的字符串會包含一些特殊的字符 , 比如 '\0' '/', 它們在 文件名和其他 C 庫函數參數里都有特別的含義 . 另外 , 大多數使用 ASCII 文件的 UNIX 下的工具 , 如果不進行重大修改是無法讀取 16 位的字符的 . 基于這些原因 , 在文件名 , 文本文件 , 環境變量等地方 , UCS-2 不適合作為 Unicode 的外部編碼 .

ISO 10646-1 Annex R RFC 2279 里定義的 UTF-8 編碼沒有這些問題 . 它是在 Unix 風格的操作系統下使用 Unicode 的明顯的方法 .

UTF-8 看起來不像是 unicode ,它只是作為一種過渡形態存在,作為新舊編碼之間交互的橋梁。雖然它是遵循 unicode 規范的,但它更像是 DBCS 的改善版,是一種 MBCS multi-byte char set )。顯然這個世界上不可能很快就完全 unicode UTF-8 還將會一直存在下去。 Window NT 操作系統的基本文本表示是 UTF-16 WCHAR 是其基本數據類型。

UTF-8 以字節為編碼單元,沒有字節序的問題。 UTF-16 以兩個字節為編碼單元,在解釋一個 UTF-16 文本前,首先要弄清楚每個編碼單元的字節序。 Unicode 規范使用 BOM Byte Order Mark )來標記字節順序。在 UCS 編碼中有一個叫做“ ZERO WIDTH NO-BREAK SPACE ”的字符,它的編碼是 FEFF 。而 FFFE UCS 中是不存在的字符。所以,如果接收到 FEFF 就表明這個字節流是 Big-Endian 的;如果是 FFFE 則是 little endian UTF-8 不需要用 BOM 來表明字節序,但可以用 BOM 來表明編碼方式。 FEFF UTF-8 編碼是 EF BB BF

以下就是 UTF-8 的模板

0x0000 - 0x007F 用一個字節表示 0xxxxxxx

0x0080 - 0x07FF 用兩個字節表示 110xxxxx 10xxxxxx

0x0800 - 0xFFFF 用三個字節表示 1110xxxx 10xxxxxx 10xxxxxx

舉個例子,如果你遇到了 11100110 10110001 10001001 01000001 這樣的字節流,首先你看第一個字節以 1110 開頭,即讀 3 個字節并按模板提取得到 0110 110001 001001( 去除模板標志﹐再四字節四字節讀即 0x6c49) ,查 unicode 編碼表就是 " " , 而最后一個以 0 開頭就一定是一個字節了, 0x0041 ,也就是 "A"

三、 ???????????????????? 字符集、字符編碼、內碼

字符必須編碼后才能被計算機處理。計算機使用的缺省編碼方式就是計算機的內碼。像 ASCII GB2312 Big5 都是屬于字符編碼。當然 UTF-8 16 也是一種字符編碼。而 unicode 則是一種規范。

GB2312 是大陸的字符編碼標準,屬于國家標準。它是與 ASCII 碼兼容的。后來又有 GBK1.0 GB18030 等字符編碼標準,這些都是向下兼容的,但橫向不兼容!比如 GB2312 Big5 在很多編碼上是重疊的,是不兼容的; Unicode GB 標準碼也是不兼容的。中文操作系統的內碼是 GBK 編碼。

由于現有的大量程序和文檔都采用樂某種特定語言的編碼,例如 GBK windows 不可能不支持現有代碼,而全部采用 unicode !這就是為什么 windows 使用了內碼機制。為了支持更多的地方語言文字, windows 還使用了 code page 機制以使 windows 能夠更方便的適應不同地方的語言文字。 GBK 對應的 code page CP936 windows 代碼頁只支持單字節和雙字節編碼的。

GB2312-80 ,是中國大陸使用的國家標準,其中一共編碼了 6763 個常用簡體漢字。 Big5 ,是臺灣使用的編碼標準,編碼了中國臺灣使用的繁體漢字,大概有 8 千多個。 HKSCS ,是中國香港使用的編碼標準,字體也是繁體,但跟 Big5 有所不同。

四、 ???????????????????? VC 中的 Unicode 編程

這個網上的資料有很多的,最重要的一個概念就是 T W _UNICODE UNICODE 等。這個理解起來感覺簡單很多,因為只要你在程序中都使用 Unicode 就好了。數據的傳輸、數據的保存、數據的使用、轉化都使用 Unicode (目前基本上都是使用 UTF-8 比較多吧)。當然了,這里肯定還是會有編碼格式轉化的問題的,比如輸入的不是 Unicode ,輸出的不能是 Unicode 等。但只要你在程序中都使用 Unicode 就解決問題了。是不是我想得太簡單了?

?

上面這些東西,很多是我從網上摘抄下來的,也有少部分是我自己的理解。如果有什么不對的地方,敬請指教。如果有什么講的不清楚的、或者需要講一下的,請提出來。如果有什么希望能夠一起討論討論的,歡迎給我發郵件或回帖討論!

Feedback

# re: unicode學習小結  回復  更多評論   

2007-03-18 15:03 by 小熊
Double-byte Character Sets
A double-byte character set (DBCS), also known as an "expanded 8-bit character set", is an extended single-byte character set (SBCS), implemented as a code page. DBCSs were originally developed to extend the SBCS design to handle languages such as Japanese and Chinese. Some characters in a DBCS, including the digits and letters used for writing English, have single-byte code values. Other characters, such as Chinese ideographs or Japanese kanji, have double-byte code values. A DBCS can correspond either to a Windows code page or an OEM code page. A DBCS code page can also include a non-native code page, for example, an EBCDIC code page. For definitions of these code pages, see Code Pages.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/unicode_9i79.asp

from MSDN
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲精选在线| 亚洲国产清纯| 欧美丝袜第一区| 欧美成人精品在线视频| 国产精品一卡二| 日韩系列欧美系列| 亚洲人成高清| 久久手机精品视频| 久久天天躁狠狠躁夜夜av| 国产精品高潮呻吟久久| 亚洲日本激情| 日韩视频永久免费| 久热这里只精品99re8久| 久久久久国产一区二区三区| 国产精品嫩草影院一区二区| 一本色道久久综合狠狠躁的推荐| 亚洲精品视频免费观看| 狼人社综合社区| 久久久7777| 国内精品亚洲| 久久精品伊人| 免费精品视频| 亚洲精品国久久99热| 免费高清在线视频一区·| 欧美va天堂| 亚洲激情国产| 欧美国产视频在线| 亚洲激情成人网| 一区二区三区偷拍| 国产精品劲爆视频| 亚洲免费视频中文字幕| 久久福利影视| 一区在线免费观看| 美女主播精品视频一二三四| 欧美国产第一页| 99re66热这里只有精品4| 欧美日韩国产一区| 亚洲一区二区网站| 久久久久久久久久久成人| 韩日精品在线| 欧美黄色免费| 亚洲视频在线免费观看| 久久国产精品99国产精| 狠色狠色综合久久| 欧美成人情趣视频| 在线亚洲欧美视频| 久久精品系列| 亚洲精品久久久久久久久久久久久| 欧美福利在线| 亚洲欧美乱综合| 美女精品在线观看| 日韩亚洲在线| 国产伦精品一区二区三区照片91| 久久精品国产精品| 91久久国产精品91久久性色| 亚洲欧美国产精品va在线观看 | 中文在线不卡视频| 久久疯狂做爰流白浆xx| 亚洲国产高清高潮精品美女| 欧美日韩午夜在线| 欧美在线亚洲综合一区| 91久久国产自产拍夜夜嗨| 亚洲欧美日本精品| 伊人男人综合视频网| 欧美日韩午夜在线视频| 久久久久久国产精品mv| 日韩一级在线| 欧美v亚洲v综合ⅴ国产v| 亚洲先锋成人| 91久久国产综合久久蜜月精品| 欧美亚韩一区| 欧美二区乱c少妇| 欧美一级在线亚洲天堂| 亚洲美女少妇无套啪啪呻吟| 久久久噜噜噜久久| 亚洲影院一区| 亚洲日本成人网| 黄色小说综合网站| 国产精品久久久久久亚洲调教| 免费在线看一区| 欧美激情久久久久| 亚洲免费视频观看| 亚洲一区二区综合| 91久久久在线| 久久久久中文| 欧美在线视频二区| 亚洲一品av免费观看| 亚洲高清精品中出| 国产一区999| 国产精品99一区| 欧美高清视频www夜色资源网| 久久精品天堂| 久久黄金**| 欧美一区二区黄色| 亚洲欧美日韩精品久久奇米色影视 | 亚洲三级色网| 亚洲成色777777女色窝| 玖玖国产精品视频| 久久精品最新地址| 久久国产欧美日韩精品| 亚洲免费在线看| 亚洲自拍偷拍视频| 亚洲午夜日本在线观看| 一本久道久久综合狠狠爱| 亚洲区中文字幕| 亚洲黄色一区| 亚洲免费av网站| 一区二区三区不卡视频在线观看| 亚洲欧洲美洲综合色网| 91久久久亚洲精品| 亚洲精品久久久蜜桃| 亚洲精品美女在线| 在线亚洲成人| 香蕉成人久久| 久久精品一本| 麻豆精品精华液| 亚洲第一精品久久忘忧草社区| 欧美激情第二页| 亚洲精品综合久久中文字幕| 夜夜嗨av色一区二区不卡| 亚洲午夜三级在线| 午夜一级在线看亚洲| 久久漫画官网| 欧美激情精品久久久久久免费印度 | 欧美 日韩 国产 一区| 欧美成人中文字幕| 欧美视频在线观看一区| 国产精品入口| 精品1区2区| 亚洲精品久久嫩草网站秘色| 亚洲午夜高清视频| 亚洲欧美中文另类| 久久精品二区三区| 亚洲第一主播视频| 制服丝袜亚洲播放| 久久精品国产亚洲一区二区三区| 免费久久精品视频| 欧美特黄视频| 一区二区视频欧美| 一个人看的www久久| 欧美一区二区三区成人| 欧美不卡福利| 亚洲视频在线观看视频| 久久午夜精品一区二区| 欧美日韩在线视频观看| 黄色成人av网站| 中文一区二区| 久久综合九色99| 一区二区三区四区在线| 久久亚洲精品伦理| 国产精品成人观看视频免费| 狠狠做深爱婷婷久久综合一区| 日韩视频在线观看国产| 久久久久久久久久久成人| 91久久在线播放| 久久av一区二区三区| 欧美日本韩国一区| 国产精品―色哟哟| 欧美日韩午夜| 久久这里只精品最新地址| 久久网站免费| 欧美午夜在线一二页| 麻豆精品一区二区综合av| 欧美激情在线狂野欧美精品| 亚洲欧美成人精品| 欧美高清在线一区二区| 国产亚洲aⅴaaaaaa毛片| 一区二区三区视频观看| 免费亚洲一区| 欧美一级欧美一级在线播放| 国产精品a级| 日韩亚洲欧美成人一区| 欧美成人免费播放| 久久精品色图| 国产一区二区三区av电影| 亚洲欧美久久久| 亚洲久久在线| 欧美精品二区| 99视频精品| 亚洲国产合集| 久久久久久久一区| 国语自产精品视频在线看| 性欧美1819性猛交| 亚洲一区二区三区精品在线观看| 亚洲一区二区在| 欧美一区午夜精品| 亚洲综合视频一区| 欧美成人高清视频| 亚洲欧洲日本在线| 亚洲第一中文字幕| 美女久久一区| 亚洲人妖在线| 亚洲激情校园春色| 欧美黄网免费在线观看| 亚洲精选在线观看| 亚洲精品一区在线观看香蕉| 欧美日本在线播放| 亚洲一区欧美二区| 正在播放亚洲一区| 国产视频久久久久|