Unicode テキストに関連する非常に苛立たしい問題に遭遇しましたが、それを修正するためにこれ以上何もできません。次のコードを使用して、iPad からサーバーに英語と日本語のテキストを保存しています。
__block ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL: [NSURL URLWithString:url]];
request.defaultResponseEncoding = NSUTF8StringEncoding;
[request addRequestHeader:@"Content-Type" value:@"charset=UTF-8;"];
NSData *data = [text dataUsingEncoding:NSUTF8StringEncoding];
[request appendPostData:data];
奇妙なことに、英語のテキスト (同じテキスト内) はサーバーに正常に保存されますが、日本語は保存されません。それらはガベージテキストに変換されます。たとえば、「 This is test フロントドアに表示されたアメックスのステッカーはありますか 」というテキストを UTF8 エンコードすると、「 This is test フãƒãƒ³ãƒˆãƒ‰ã‚¢ã«è¡¨ç¤ºã•ã 」として保存されます。 ‚ŒãŸã‚¢ãƒ¡ãƒƒã‚¯ã‚¹ã®ã‚¹ãƒ†ãƒƒã‚«ãƒ¼ã¯ã‚ãŠã¾ã™ã‹ï¼Ÿ」。
ここで何がうまくいかないのか教えてください。ありがとう。
[編集]
Sending a form POST with ASIFormDataRequest
To send POST data in a manner compatible with web page forms, use the included.
ASIFormDataRequest subclass. ***Data is posted in ‘application/x-www-form-urlencoded’
format, or ‘multipart/form-data’ format when uploading binary data*** or files. Data in
files is read as needed from disk, so POSTing large files is OK, as long as your
web server is setup to handle them.
そこで、ASIFormDataRequest の代わりに ASIHTTPRequest を使用するようにコードを変換しましたが、それでもうまくいきません!
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL: [NSURL URLWithString:url]];
[request setDefaultResponseEncoding:NSUTF8StringEncoding];
[request setRequestMethod:@"POST"];
[request addRequestHeader:@"Content-Type" value:@"charset=UTF-8;"];
NSData *data = [text dataUsingEncoding:NSUTF8StringEncoding];
[request appendPostData:data];