歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux下Unicode的使用實踐筆記

Linux下Unicode的使用實踐筆記

日期:2017/2/28 16:41:25   编辑:Linux教程

最近,開始了Linux的移植工作,即將windows下開發的win32程序移植到Linux下面。在移植過程中,被寬字符和Unicode的轉換折騰了半天,最終成功移植。下面將查到的資料和自己的一些總結做如下說明:

首先,簡單的介紹一下Unicode的概要。

Unicode 通常用作涉及雙字節字符編碼方案的通用術語。Unicode CCS 3.1 的官方稱謂是 ISO10646-1 通用多八字節編碼字符集(Universal Multiple Octet Coded Character Set,UCS)。Unicode 3.1 版本添加了 44,946 個新的編碼字符。算上 Unicode 3.0 版本已經存在的 49,194 個字符,共計 94,140 個。

UNIX 中,使用得最多的字符編碼方案是 UTF-8。 它考慮到了對整個 Unicode 全部頁和平面的全面支持,而且它仍能正確的識別 ASCII。除了 UTF-8 的其他選擇還有:UCS-4、UTF-16、UTF-7.5、UTF-7、SCSU、HTML 和 JAVA。

Unicode 轉換格式(Unicode Transformation Formats,UTFs)是一種通過映射多字節編碼中的值來支持 Unicode 的字符編碼方案。本文將分析最流行的格式 ― UTF-8 字符編碼系統。

UTF-8

UTF-8 轉換格式正逐步成為一種占主導地位的交換國際文本信息的方法,因為它可以支持世界上所有的語言,而且它還與 ASCII 兼容。UTF-8 使用變長編碼。從 0 到 0x7f(127)的字符把自身編碼成單字節,而將值更大的字符編碼成 2 到 6 個字節。

有兩種方法可以將 UTF-8 支持添加到 Linux 應用程序中。第一種方法,數據都以 UTF-8 形式存放在各處,這樣軟件改動很少(被動的)。另一種方法,被讀取的 UTF-8 數據用標准的 C 語言庫函數轉變成為寬字符數組(轉換的)。在輸出時,用函數 wcsrtombs() 使字符串被轉變回 UTF-8:

Copyright © Linux教程網 All Rights Reserved