2010-09-22 103 views
38

任何人都可以告訴我Unicode可打印字符的範圍是什麼? [例如。 ascii可打印的字符範圍是\ u0020 - \ u007f]Unicode可打印字符的範圍是什麼?

+1

\ u0000 - \ u0020也是Unicode中不可打印的 – Andrey 2010-09-22 14:22:37

+3

更像是\ u0020 - \ u007e – 2013-08-26 12:57:47

+0

你肯定對這個問題有很多仇恨。我喜歡這個主意。 – jsejcksn 2016-01-07 08:52:52

回答

19

見,http://en.wikipedia.org/wiki/Unicode_control_characters

你可能想看看尤其是在C0和C1控制字符http://en.wikipedia.org/wiki/C0_and_C1_control_codes

維基說,C0控制字符的範圍是從U + 0000-U + 001F和U + 007F(與ASCII的範圍相同)和C1控制字符在範圍U + 0080-U + 009F

除C控制字符以外,Unicode還具有數百個格式控制字符,例如零寬度非連接器,使字符間距更近,或雙向文本控制。這種格式化控制字符比較分散。

更重要的是,你在做什麼,需要你瞭解Unicode的非打印字符?更可能的是,無論你想要做什麼都是解決你的問題的錯誤方法。

+3

我想創建一個隨機的unicode字符串生成器,它將生成可打印的字符。 – 2010-09-22 14:29:53

+5

由誰打印?你想包括例如。所有的中文字符?許多用戶不會爲他們提供字體,因此「打印」它們不會給你任何東西,空白的盒子或其他無用的替換字符。 – bobince 2010-09-22 20:29:07

+5

一個很好的理由是避免安全漏洞:https://bugzilla.mozilla.org/show_bug.cgi?id = 968576 – 2015-04-07 20:46:22

-5

Unicode,stict術語,沒有範圍。數字可以走向無限。

你給出的不是UTF8,它有1個字節的ASCII字符。

至於範圍,我相信沒有可打印字符的範圍。它一直在發展。檢查我上面給出的頁面。

+7

Afaik Unicode只能定義到0x10ffff,除此之外沒有代碼點將被分配 – Sebastian 2010-12-03 06:42:38

13

首先,你應該在你的問題中刪除單詞'UTF8',它不相關(UTF8只是Unicode的一種編碼,它與你的問題是正交的)。

第二:「可打印/不可打印」的含義在Unicode中不太清楚。也許你的意思是「graphical character」;而且人們甚至可以爭論一個空間是可打印/圖形的。非圖形字符基本上由控制字符組成:範圍0x00-0x0f加上其他一些分散的字符。

無論如何,絕大多數Unicode字符(超過200.000)是「圖形」。但這並不意味着它們可以在您的環境中打印。

在我看來,如果你打算生成一個「隨機打印的」unicode字符串,試圖包含所有「可打印」字符,這似乎是一個壞主意。

3

您應該做的是挑選一種字體,然後生成一個列表,其中包含爲您的字體定義的字形。您可以使用像freetype這樣的字體庫來測試字形(測試FT_Get_Char_Index(...)!= 0)。