0

U+20000 から U+2B81F の範囲のエスケープされた Unicode (例: \u3400) を含む文字列を URL に変換しようとしていますが、うまくいきません。U+3400 から U+9FFF の範囲は問題なく動作します。

NSString *string1 = @"\u9FFF";
string1 = [string1 stringByReplacingPercentEscapesUsingEncoding:NSUnicodeStringEncoding];
NSURL *url1 = [NSURL URLWithString:[NSString stringWithFormat:@"http://en.wikipedia.org/Search?search=%@", string1]];
NSLog(@"url1: %@", url1);

出力: url1: http://en.wikipedia.org/Search?search=%E9%BF%BF

NSString *string2 = @"\u20000";
string2 = [string2 stringByReplacingPercentEscapesUsingEncoding:NSUnicodeStringEncoding];
NSURL *url2 = [NSURL URLWithString:[NSString stringWithFormat:@"http://en.wikipedia.org/Search?search=%@", string2]];
NSLog(@"url2: %@", url2);

出力: url2: (ヌル)

基本的に、エスケープされた Unicode (\u3400 から \u2B81F) のリストを URL (または NSString) に変換したいのです。他の文字列変換手段でこれを達成する別の方法があれば、感謝します。

4

1 に答える 1

1

NSString がすでに UTF-8 でエンコードされているのに、なぜ Unicode 文字をエスケープ解除しようとしているのかわからない:

編集:私はそれを手に入れました!確かに NSLog() はまったくありませんが、(null) ではなく、それだけが重要です。

const char * str = "\0xF0\0xA0\0x80\0x80";
NSString *string2 = [NSString stringWithUTF8String:str];
NSURL *url2 = [NSURL URLWithString:[NSString stringWithFormat:@"http://en.wikipedia.org/Search?search=%@", string2]];
NSLog(@"url2: %@", string2);
于 2012-07-01T15:55:28.967 に答える