[英]Displaying Unicode Characters
我已經在這里搜索了此類問題的答案,並且找到了很多答案,但是對於此事的表面上看,瑣碎的問題我仍然存有疑惑。
我已經閱讀了這篇非常有趣的有關該主題的有用文章: http : //www.joelonsoftware.com/articles/Unicode.html ,但是這讓我想知道如何在給定Unicode數據緩沖區的情況下識別單個字形。
我的問題是:
我將如何解析Unicode字符串(例如UTF-8)?
假設我知道字節順序,當我遇到應該由6個字節表示的字形的開頭時會發生什么?
也就是說,如果我正確解釋了存儲方法。
這都與我要使用OpenGL的文本顯示系統有關。 我將字形數據存儲在顯示列表中,我需要將字符串的內容轉換為字形索引序列,然后將其映射到顯示列表索引(因為顯然,將整個字形集存儲在圖形內存中並不總是可行的)。
考慮到我需要顯示的所有內容,必須將每個字符串表示為短褲數組將需要大量存儲空間。
另外,在我看來,每個字符2個字節根本不足以表示每個可能的Unicode元素。
我將如何解析Unicode字符串(例如UTF-8)?
我假設通過“解析”,您的意思是轉換為代碼點。
通常,您不必這樣做。 例如,您可以在另一個UTF-8字符串中搜索UTF-8字符串,而無需關心這些字節代表什么字符。
如果確實需要轉換為代碼點(UTF-32),則:
另外,在我看來,每個字符2個字節根本不足以表示每個可能的Unicode元素。
不是。 Unicode最初是固定為16位編碼的。 后來決定65,536個字符是不夠的,因此創建了UTF-16,並重新定義了Unicode以使用0到1,114,111之間的代碼點。
如果需要固定寬度的編碼,則需要21位。 但是使用21位整數類型的語言並不多,因此實際上您需要32位。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.