-1

私のアプリでは、\n のような Unicode 文字とこれらの文字を使用できるようにしたい: http://www.easyapns.com/category/just-for-fun

テキストは sqlite3 データベースに保存されており、それを読むと、たとえば、スマイリーの代わりに \ue415 というテキストが表示されます。改行もありませんが、 \n です。

このコードを使用して、スマイリーと改行を表示できます。

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

しかし、すべてのユニコード文字を表示できるようにするために、これを行う一般的な方法を見つけたいと思います。

この方法で sqlite3 データベースからテキストを取得しています:

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

\\ を \ に置き換えようとしましたが、文字列 @"\" は " をエスケープするため、記述できません ... \\\\ を \\ に置き換えようとしましたが、うまくいきません。また、他のエンコーディングを使用してデータベースから文字列を取得しようとしましたが、成功しませんでした...

何か案が ?

4

1 に答える 1

0

私はついにそこに私の解決策を見つけました(受け入れられた答えではなく、Nikolai Ruheからのもの):

Objective C/Cocoa を使用して Unicode 文字をエスケープ解除します。つまり \u1234

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

ただし、\n はエスケープしませんが、stringByReplaceingOccurrencesOfString を使用すると簡単に実行できます。

于 2013-08-19T17:44:33.753 に答える