cocoa – 如何在NSString中转义unicode字符?

当我在一些NSDictionary中存储Nsstring并将该字典记录到控制台时,如下所示:

Nsstring *someString = @"Münster";  
NSDictionary *someDict = [ NSDictionary dictionaryWithObjectsAndKeys: 
    someString,@"thestring" ];
NSLog ( @"someDict: %@",[ someDict description ] );

控制台输出如下所示:

unicode_test[3621:903] someDict:
{
    thestring = "M\U00fcnster";
}

字符串的unicode字符被转义.
有没有方法将Nsstring转换为此转义表示?

解决方法

可以使用给定字符串的UniChar字符串表示形式的循环来解决该问题.在Nsstring上实现为扩展,它看起来像这样:

- (Nsstring *) escapedUnicode  
{  
    NSMutableString *uniString = [ [ NSMutableString alloc ] init ];  
    UniChar *uniBuffer = (UniChar *) malloc ( sizeof(UniChar) * [ self length ] );  
    CFRange stringRange = CFRangeMake ( 0,[ self length ] );  

    CFStringGetCharacters ( (CFStringRef)self,stringRange,uniBuffer );  

    for ( int i = 0; i < [ self length ]; i++ ) {  
        if ( uniBuffer[i] > 0x7e )  
            [ uniString appendFormat: @"\\u%04x",uniBuffer[i] ];  
        else  
            [ uniString appendFormat: @"%c",uniBuffer[i] ];  
    }  

    free ( uniBuffer );  

    Nsstring *retString = [ Nsstring stringWithString: uniString ];  
    [ uniString release ];  

    return retString;  
}

相关文章

我正在用TitaniumDeveloper编写一个应用程序,它允许我使用Ja...
我的问题是当我尝试从UIWebView中调用我的AngularJS应用程序...
我想获取在我的Mac上运行的所有前台应用程序的应用程序图标....
我是一名PHP开发人员,我使用MVC模式和面向对象的代码.我真的...
OSX中的SetTimer在Windows中是否有任何等效功能?我正在使用...
我不确定引擎盖下到底发生了什么,但这是我的设置,示例代码和...