我正在寫一個文本編輯器,它有一個選項來顯示子彈來代替任何不可見的Unicode字符。不幸的是,似乎沒有簡單的方法來確定Unicode字符是否看不見。確定Unicode字符是否可見?
我需要找到一個包含每個Unicode字符的文本文件,以便我可以查看不可見字符。有人會知道我能找到這樣的文件嗎?
編輯:我寫這個程序在可可的Mac OS X
我正在寫一個文本編輯器,它有一個選項來顯示子彈來代替任何不可見的Unicode字符。不幸的是,似乎沒有簡單的方法來確定Unicode字符是否看不見。確定Unicode字符是否可見?
我需要找到一個包含每個Unicode字符的文本文件,以便我可以查看不可見字符。有人會知道我能找到這樣的文件嗎?
編輯:我寫這個程序在可可的Mac OS X
哦,我知道了...實際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];
它不可能完成的任務,Unicode的支持甚至克林貢語,所以它不是去上班。但是大多數文本編輯器都使用標準的ANSI不可見字符。如果你的Unicode庫是好的,它將支持查找等效字符和/或類別,你可以使用這兩個功能來做它以及任何編輯0123支持,但這並不是真的......當然,Klingon不被聯盟支持,但是在Klingon字母表中爲Unicode定義的「私人使用區域」(U + F8D0 - U + F8FF)。 Link here對於那些有興趣:)
注:奇蹟克林貢語的程序員用什麼編輯器...
實際的Unicode標準不包括虛構的腳本 - 也許聯盟會在某一天添加它們,但現在它們還有更多需要擔心的地方。但是映射的Unicode部分是非常明確的,所以有一個全面的不可見字符列表。 – coppro 2008-11-20 06:51:02
一個良好的開端是Unicode Consortium本身它提供了大量數據,其中有些會是什麼您正在尋找。
我也在生產一個DLL的過程中,你給一個字符串,它會給出每個字符的UCNs。但不要屏住呼吸。
目前官方Unicode版本是5.1.0,並描述了所有的代碼點的文本文件,可以在http://www.unicode.org/standard/versions/components-latest.html
對於Java,java.lang.Character.getType創建一個Unicode字符串的例子。對於C,u_charType()或u_isgraph()。
讓我知道如果這個代碼可以幫助所有:
-(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上的字符,如果您有這樣的要求,則必須添加對堆肥字符的支持。這根本沒有錯誤檢查。
「不可見」是指所選字體中沒有的字形嗎?還是其他的東西,比如屬於複合材料的角色? – 2008-11-20 06:32:13
我的意思是沒有出現在屏幕上的字符。我想用子彈替換它們,以便用戶可以知道它們在那裏。 – titaniumdecoy 2008-11-20 07:01:11
我添加了另一個答案,可以幫助回答其他問題......如果沒有,請告訴我。 – 2008-11-20 09:11:20