2013-08-19 23 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完成。