Я столкнулся с очень неприятной проблемой, связанной с текстом 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];
Странно то, что английский текст (в тех же текстах) прекрасно сохраняется на сервере, но не японский. Они преобразуются в какой-то мусорный текст. Например Когда я UTF8 кодирования в "Это тест フ ロ ン ト ド ア に 表示 さ れ た ア メ ッ ク ス の ス テ ッ カ ー は あ り ま す か" текст, он хранится в виде «Это испытание ム• ãƒãƒ³ãƒãƒ ‰ ã, ¢ 㫠表示㠕 ã ‚ŒãŸã‚¢ãƒ¡ãƒƒã‚¯ã‚¹ã®ã‚¹ãƒ†ãƒƒã‚«ãƒ¼ã¯ã‚ã‚Šã¾ã™ã‹ï¼Ÿ».
Может ли кто-нибудь указать мне, что здесь происходит не так? Спасибо.
[РЕДАКТИРОВАТЬ]
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.
Поэтому я преобразовал свой код для использования ASIHTTPRequest вместо ASIFormDataRequest, но все равно не повезло!
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];
UTF8
? - person rckoenes   schedule 10.09.2012