2011-01-25 4 views
4

XML/NSMutableURLRequestを使用して私たちのウェブサイトからコンテンツを引き出している場合がありますが、時には "curly"スタイルのアポストロフィと引用符を使用します。 NSMutableURLRequestはこれらを嫌い、奇妙な\ U00e2 \ U0080 \ U0099文字列に変換します。iphone:NSMutableURLRequestがMS Wordスタイルのアポストロフィーに奇妙な文字を返します

これを防ぐためにできることはありますか?私はGETメソッドを使用しているので、何とかUTF-8を使用するように指示する必要がありますか?または、私は何かを逃していますか?

+0

あなたが問題に関連したコードを投稿してもらえますか? – Alex

+0

私の投稿を更新しました... –

答えて

5

NSURLConnectionNSData応答を返します。応答をNSDataにして文字列にすることができます。次に、この文字列を取り出してNSDataオブジェクトに戻し、途中でUTF-8を正しくエンコードし、NSXMLParserに送ります。

例:(responseと仮定すると、あなたの要求からNSData応答である)

// long variable names for descriptive purposes 
NSString* xmlDataAsAString = [[[NSString alloc] initWithData:response] autorelease]; 
NSData* toFeedToXMLParser = [xmDataAsAString dataUsingEncoding:NSUTF8StringEncoding]; 
NSXMLParser* parser = [[[NSXMLParser alloc] initWithData:toFeedToXMLParser] autorelease]; 
// now utilize parser... 
+0

これが役立つかどうか教えてください。 – Alex

+0

実際には、私はすでにエンコーディングを設定していたことに気付きましたが、NSASCIIStringEncodingでNSUTF8StringEncodingに変更しました。 –

+0

驚くばかり!あなたがそれを理解してうれしいです。 :) – Alex

0

不要な文字列を置き換えるには、stringByReplacingCharactersInRange:withString:を使用してそれらの文字を置き換えることをお勧めします。

NSString *currentTitle = @"Some string with a bunch of stuff in it."; 

//Create a new range for each character. 
NSRange rangeOfDash = [currentTitle rangeOfString:@"character to replace"]; 
NSString *location = (rangeOfDash.location != NSNotFound) ? [currentTitle substringToIndex:rangeOfDash.location] : nil; 

if(location){ 
    currentTitle = [[currentTitle stringByReplacingOccurrencesOfString:location withString:@""] mutableCopy]; 
} 

あなたが説明したのと同じ問題を処理するためにこれを過去に行ってきました。

+0

ええ、これは問題を解決するだけで、それを防ぐのではありません。最初にこれを防ぐ方法がありますか? –

+0

@NicHubbard - わからない – Moshe

0

はstringByReplacingPercentEscapesUsingEncodingを使用してみてください:

関連する問題