我正在编写一个文本编辑器,它可以选择显示一个子弹来代替任何不可见的Unicode字符。不幸的是,似乎没有简单的方法来确定Unicode字符是否不可见。
我需要找到一个包含每个Unicode字符的文本文件,以便我可以查看不可见的字符。有谁知道我在哪里可以找到这样的文件?
编辑:我正在使用Cocoa for Mac OS X编写此应用程序。答案 0 :(得分:3)
哦,我看到...实际隐形字符;)这个常见问题可能会有用:
http://www.unicode.org/faq/unsup_char.html
它列出了当前不可见的代码点,并提供了其他有用的信息。
编辑:添加了一些特定于Cocoa的信息
由于你正在使用Cocoa,你可以获得控制字符的unicode字符集并与之进行比较:
NSCharacterSet* controlChars = [NSCharacterSet controlCharacterSet];
您可能还想查看我上面发布的FAQ链接,并根据controlCharacterSet返回的字符集中的信息添加您认为可能需要的任何字符。
编辑:添加了从Unicode字符
创建Unicode字符串的示例unichar theChar = 0x000D;
NSString* thestring = [NSStirng stringWithCharacters:&theChar length:1];
答案 1 :(得分: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上的字符,如果您有这样的要求,则必须添加对堆肥字符的支持。这根本没有错误检查。
答案 2 :(得分:0)
一个好的起点是Unicode Consortium本身,它提供了大量的数据,其中一些将是您正在寻找的。 p>
我也正在制作一个DLL,你给它一个字符串,它会返回每个字符的UCN。但是不要屏住呼吸。
答案 3 :(得分:0)
目前的官方Unicode版本是5.1.0,可以在http://www.unicode.org/standard/versions/components-latest.html找到描述其中所有代码点的文本文件
答案 4 :(得分:0)
对于Java,java.lang.Character.getType。对于C,u_charType()或u_isgraph()。
答案 5 :(得分:0)
答案 6 :(得分:-1)
这是一项不可能完成的任务,Unicode甚至支持Klingon,所以它不会起作用。但是,大多数文本编辑器使用标准ANSI不可见字符。如果您的Unicode库很好,它将支持查找等效的字符和/或类别,您可以使用这两个功能以及任何编辑器
编辑:是的我对克林贡恩的支持感到愚蠢,但这并不是真的......当然,克林贡并没有得到财团的支持,但是克林贡有一个运动在为克林贡字母(U + F8D0 - U + F8FF)定义的Unicode的“私人使用区”中。 Link here感兴趣的人:)
注意:想知道Klingon程序员使用的编辑器......