0

我遇到了与 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 编码为“This is test フロントドアに表示されたアメックスのステッカーはありますか”文本时,它存储为“This is test ‚ŒãŸã,¢ãƒ¡ãƒƒã,¯ã,¹ã®ã,¹ãƒ†ãƒã,«ãƒ¼ã¯ã,ã,Šã¾ã™ã‹ï¼Ÿ”。

谁能指出我这里出了什么问题?谢谢。

[编辑]

来自ASIHTTPRequest 文档

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];
4

1 回答 1

2

以下工作!对于内容类型,您必须具有 value = "text/json; charset=utf-8"。只是设置字符集是行不通的!

    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL: [NSURL URLWithString:url]];
    [request setDefaultResponseEncoding:NSUTF8StringEncoding];
    [request setRequestMethod:@"post"];
    [request addRequestHeader:@"content-type" value:@"text/json; charset=utf-8"];
于 2012-09-10T10:05:25.917 回答