2008-12-24 27 views
3

處理內存時,unicode字符串最受歡迎的格式是什麼?爲什麼?進程內存中的Unicode字符串

我正在通過爲其生成可執行文件映像來實現編程語言。很顯然,一個可用的編程語言實現需要一個處理字符串的協議。

我想過使用動態數組作爲字符串的基礎,因爲它們實現起來非常簡單,並且對於短字符串非常有效。以這種方式使用字符串時,我不知道字符的最佳可能格式。

回答

4

UTF16是最廣泛使用的格式。

UTF16超過UTF8的優勢在於,儘管是那麼緊湊,每一個角色都有的2字節(16位)一定的大小 - 只要堅持2個字節字符,當你不使用替代品(,編碼被稱爲UCS-2)。

在UTF8中,只有一小部分字符以1字節編碼,其他字符只有4字節。這使字符處理更直接,更容易出錯。

當然,使用Unicode是首選,因爲它可以使國際化的字符。

+1

Unicode有1112064有效碼點,所以 [UTF-16是可變寬度:1或2塊的16個比特](https://en.wikipedia.org/wiki/ UTF-16)。根據維基百科的說法,UTF-16的單塊子集確實是不夠的:「從Unicode 9.0開始,一些現代非拉丁亞洲,中東和非洲的腳本不在這個範圍內,大多數表情符號也是如此」 – 2017-11-22 11:21:05

3

C Python 2.x系列根據平臺/構建/ etc使用了UTF-16和UCS-4。

Here's an interesting discussion from python-dev on the requirements and trade-offs in choose the Unicode internal representation for Python 3.0。儘管有更多的內容有比我可以簡要地描述,它包括:

  • 論外部接口(恆定時間切片,.lower的有效實現,.islower等)
  • 外部要求(GTK需要UTF -8字符串,QT使用UTF-16和UCS-4字符串,Windows使用UT-16字符串等)
  • 它指向Unicode數據的其他實現(例如QT)。
  • 它討論了重要的用例(與外部接口密切相關)。