以下のように % エスケープされた文字列をデコードしたい。
%E7%89%9B%E4%B9%B3%E3%81%8C%E7%BE%8E%E5
Web API を介して、日本語の文字列を含む xml データを取得します。このアプリは NSURLConnection で受け取りました。したがって、データは以下の方法で受信されました。
- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
NSString *xml = [[NSString alloc] initWithData:receivedData encoding:encoding];
NSData *xmlData = [[xml stringByReplacingPercentEscapesUsingEncoding:encoding]
dataUsingEncoding:encoding];
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:xmlData];
[parser setDelegate:self];
[parser parse];
}
ただし、この xmlData には、日本語のエスケープ文字列ではなく、英語のアルファベット文字列のみが含まれています。そのため、xmlData から日本語の文字列データを取得できません。
本来、この xmlData は
<?xml version="1.0" encoding="UTF-8" ?><ResultSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:yahoo:jp:jlp" xsi:schemaLocation="urn:yahoo:jp:jlp http://jlp.yahooapis.jp/MAService/V1/parseResponse.xsd"><ma_result><total_count>3</total_count><filtered_count>3</filtered_count><word_list><word><surface>夏</surface><reading>なつ</reading><pos>名詞</pos></word><word><surface>は</surface><reading>は</reading><pos>助詞</pos></word><word><surface>あつい</surface><reading>あつい</reading><pos>形容詞</pos></word></word_list></ma_result></ResultSet>
しかし今 xmlData は
<?xml version="1.0" encoding="UTF-8" ?><ResultSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:yahoo:jp:jlp" xsi:schemaLocation="urn:yahoo:jp:jlp http://jlp.yahooapis.jp/MAService/V1_list></ma_result></ResultSet>
stringByReplaceingPercentEscapesUsingEncoding メソッドは日本語のデータを省略していると思いますね。解決方法を教えてください。