2013-08-19 21 views
-1

对于我的程序,我希望能够使用unicode caracters如\ n和这些的: http://www.easyapns.com/category/just-for-fun的iOS,sqlite3的和统一焦炭

的文本存储在一个sqlite3的数据库,当我读它,例如,我得到了文字\ ue415而不是笑脸。我没有换行符,但是\ n。

我能够显示使用这段代码的表情和换行符:

NSString* unicodeString = [myString stringByReplacingOccurrencesOfString:@"\\n" withString:@"\n"]; 
unicodeString = [unicodeString stringByReplacingOccurrencesOfString:@"\\ue022" withString:@"\ue022"]; 
// etc... 

但我想找到一个通用的方法来做到这一点,为了能够显示所有unicode字符。

我从我的sqlite3的数据库这种方式获取文本:

NSString* title = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 3)]; 

我试图通过\更换\\,但它是不可能写入字符串@“\”,因为它逃脱“...我试图用\\替换\\,但它不起作用,我也试图从数据库中使用其他编码获取字符串,但没有成功...

任何想法?

+2

你一定在做别的事情。 sqlite可以存储任何可以放在'NSString'中的UTF-8字符串。无需进行任何预处理或后处理。 – rmaddy

+0

感谢您的回答,但我不认为问题来自sqlite,但更多来自UILabel(我使我的数据库旧方式使用我的方案和插入的文本文件,和命令sqlite3 my_db.sqlite3 < my_db.sql)。我从其他地方读到,从XML文件中读取字符串并在UILabel中显示unicode字符时(他解决了他的问题,并返回了stringByReplacingOccurrencesOfString),他遇到了同样的问题。 –

+0

(感谢您的反对,没有说明><) –

回答

0

我终于在那里找到了我的解决方案(不是接受的答案,来自尼古拉汝和):

Using Objective C/Cocoa to unescape unicode characters, ie \u1234

NSString* convertedString = [myString mutableCopy]; 
CFStringRef transform = CFSTR("Any-Hex/Java"); 
CFStringTransform((__bridge CFMutableStringRef)convertedString, NULL, transform, YES); 

它不会逃避\ n虽然,但它可以easilly与stringByReplacingOccurrencesOfString完成。