2008-11-20 97 views
2

我正在寫一個文本編輯器,它有一個選項來顯示子彈來代替任何不可見的Unicode字符。不幸的是,似乎沒有簡單的方法來確定Unicode字符是否看不見。確定Unicode字符是否可見?

我需要找到一個包含每個Unicode字符的文本文件,以便我可以查看不可見字符。有人會知道我能找到這樣的文件嗎?

編輯:我寫這個程序在可可的Mac OS X

+0

「不可見」是指所選字體中沒有的字形嗎?還是其他的東西,比如屬於複合材料的角色? – 2008-11-20 06:32:13

+0

我的意思是沒有出現在屏幕上的字符。我想用子彈替換它們,以便用戶可以知道它們在那裏。 – titaniumdecoy 2008-11-20 07:01:11

+0

我添加了另一個答案,可以幫助回答其他問題......如果沒有,請告訴我。 – 2008-11-20 09:11:20

回答

3

哦,我知道了...實際invisble文字中找到)本FAQ將可能有用:

http://www.unicode.org/faq/unsup_char.html

它列出了當前的隱形碼點,並有可能對您有幫助的其他信息。

編輯:添加一些可可特定信息

由於您使用可可,你可以得到的Unicode字符控制字符集和比較針對:

NSCharacterSet* controlChars = [NSCharacterSet controlCharacterSet]; 

您也可能想要查看我上面發佈的FAQ鏈接,並根據那些信息將您認爲可能需要的任何字符添加到controlCharacterSet返回的字符集中。

編輯:添加從Unicode字符

unichar theChar = 0x000D; 
NSString* thestring = [NSStirng stringWithCharacters:&theChar length:1]; 
0

它不可能完成的任務,Unicode的支持甚至克林貢語,所以它不是去上班。但是大多數文本編輯器都使用標準的ANSI不可見字符。如果你的Unicode庫是好的,它將支持查找等效字符和/或類別,你可以使用這兩個功能來做它以及任何編輯0123支持,但這並不是真的......當然,Klingon不被聯盟支持,但是在Klingon字母表中爲Unicode定義的「私人使用區域」(U + F8D0 - U + F8FF)。 Link here對於那些有興趣:)

注:奇蹟克林貢語的程序員用什麼編輯器...

+0

實際的Unicode標準不包括虛構的腳本 - 也許聯盟會在某一天添加​​它們,但現在它們還有更多需要擔心的地方。但是映射的Unicode部分是非常明確的,所以有一個全面的不可見字符列表。 – coppro 2008-11-20 06:51:02

0

一個良好的開端是Unicode Consortium本身它提供了大量數據,其中有些會是什麼您正在尋找。

我也在生產一個DLL的過程中,你給一個字符串,它會給出每個字符的UCNs。但不要屏住呼吸。

1

讓我知道如果這個代碼可以幫助所有:

-(NSString*)stringByReplacingControlCharacters:(NSString*)originalString 
{ 
    NSUInteger length = [originalString length]; 
    unichar *strAsUnichar = (unichar*)malloc(length*sizeof(unichar)); 
    NSCharacterSet* controlChars = [NSCharacterSet controlCharacterSet]; 
    unichar bullet = 0x2022; 

    [originalString getCharacters:strAsUnichar]; 
    for(NSUInteger i = 0; i < length; i++) { 
     if([controlChars characterIsMember:strAsUnichar[i]]) 
      strAsUnichar[i] = bullet; 
    } 

    NSString* newString = [NSString stringWithCharacters:strAsUnichar length:length]; 
    free(strAsUnichar); 

    return newString; 
} 

重要注意事項:

這可能不是最這樣做的有效方式,所以你必須決定在你的工作後你想如何進行優化。這隻適用於BMP上的字符,如果您有這樣的要求,則必須添加對堆肥字符的支持。這根本沒有錯誤檢查。

相關問題