- ベストアンサー
【アプリ開発】XMLファイル読み込みで日本語表示が文字化けしてしまう問題について
- iOSアプリ開発中にXMLファイルを読み込んで日本語を表示したいですが、文字化けしてしまいます。
- 「iPhone/iPadアプリ開発逆引き大全500の極意」のサンプルを使用していますが、日本語文字列が正しく表示されません。
- 解決方法を探していますが、ネットでの情報では解決できない状況です。どなたかアドバイスをお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ViewController.mの、clickReadを以下のように書き換えてみてください。 - (IBAction)clickRead:(id)sender { NSString *path = [[NSBundle mainBundle] pathForResource:@"persons" ofType:@"xml"]; xmlDocPtr doc = xmlParseFile([path cStringUsingEncoding:NSUTF8StringEncoding]); // XMLファイルを読み込む xmlXPathContextPtr context = xmlXPathNewContext(doc); xmlChar *xpath = (xmlChar*)[@"//person/name" cStringUsingEncoding:NSUTF8StringEncoding]; xmlXPathObjectPtr result = xmlXPathEval(xpath , context); xmlNodeSetPtr nodeset = result->nodesetval; NSMutableString *text = [NSMutableString string]; for ( int i=0; i<nodeset->nodeNr; i++ ) { xmlChar *element = xmlNodeListGetString(doc, nodeset->nodeTab[i]->children, 1); NSString* str = [NSString stringWithCString:element encoding:NSUTF8StringEncoding]; NSLog(@"str=%@",str); // << ここと [text appendFormat:@"name: %@\n", str]; // << ここ // NSLog(@"element: %s", element); // [text appendFormat:@"name: %s\n", element]; } xmlXPathFreeObject(result); xmlXPathFreeContext(context); textView.text = text; } Readボタンを押して、nameに漢字が設定されても、正しく表示されると思います。
その他の回答 (1)
- jppy
- ベストアンサー率14% (14/99)
書き換えた【persons.xml】ファイルを、encoding="utf-8"で保存していますか?
補足
encoding="utf-8"で保存はしているかどうかはわかりません.... Xcode上で開いて修正して保存しているだけなので.... 何か別のアプリケーションで開いてちゃんとencoding="utf-8"保存しないといけないのでしょうか? 試しにmacのテキストエディタで開いて修正して保存してもダメでした。 テキストエディタの環境設定でエンコーディングは「Unicode(UFT-8)」になっていました。 たぶん、encoding="utf-8"で保存されているとは思うんですが....
お礼
できました!! NSString* str = [NSString stringWithCString:element encoding:NSUTF8StringEncoding]; のところで警告が出てきましたが、 NSString* str = [NSString stringWithCString:(const char*)element encoding:NSUTF8StringEncoding]; に訂正すると警告も無く動作して日本語も表示されました。 本当にありがとうございました。 大変感謝しておりますm(__)m