iphone - ASIHttpRequest 的编码问题

标签 iphone encoding ios4 plist asihttprequest

我的 ASIHttpRequest 存在编码问题。当我获取 URL 时,除了一点编码问题之外,数据都完美返回。

这是我的代码:

- (void)fetchGamesForCategory
{
    NSString *url_string = [[NSString alloc] initWithFormat:url_match, theCategory._id];

    NSURL *url = [NSURL URLWithString:url_string];
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    [request startSynchronous];

    NSError *error = [request error];
    if (!error) {
        NSString *response = [request responseString];

        NSLog(@"response: %@", response);

        NSData *data = [response dataUsingEncoding:NSUTF8StringEncoding];

        NSString *errorDesc = nil;
        NSPropertyListFormat format;
        NSDictionary * dict = (NSDictionary*)[NSPropertyListSerialization
                                              propertyListFromData:data
                                              mutabilityOption:NSPropertyListMutableContainersAndLeaves
                                              format:&format
                                              errorDescription:&errorDesc];

        NSDictionary *categoryListPathDictionary = [[NSDictionary alloc] initWithDictionary:dict];

        categoryMatchList *categoryMatchListFile = [[[categoryMatchList alloc] initWithDictionary:categoryListPathDictionary] retain];
        matchArray = [categoryMatchListFile getMatchListXmlSet];

        [self loadPage];
    }
}

这是我的结果:

2010-09-28 21:49:35.970 oddsApp[46429:190f] response: <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist>
    <dict>
        <key>matches</key>
        <array>
            <dict>
                <key>name</key>
                <string>Gais - Häcken</string>
                <key>date</key>
                <string>2010-09-29 18:00</string>
                <key>id</key>
                <string>156</string>
                <key>odds</key>
                <dict>
                    <key>1</key>
                    <string>2.6</string>
                    <key>X</key>
                    <string>3.28</string>
                    <key>2</key>
                    <string>2.862</string>
                </dict>
            </dict>
        </array>
    </dict>
</plist>

正如你所看到的,编码在 <string>Gais - Häcken</string> 处被搞砸了。 ,尽管在浏览器中显示页面时它是正确的: FireFox screenshot

有人知道出了什么问题吗?

最佳答案

如果不先将响应转换为字符串怎么办?

NSData *data = request.responseData;

关于iphone - ASIHttpRequest 的编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3816633/

相关文章:

iphone - iOS4.0 iphone应用程序在后台运行时AudioQueueStart失败

iphone - 如何检查星期几(即星期二、星期五?)并比较两个 NSDates?

encoding - Notepad++中的编码和转换有什么区别?

iphone - 从不兼容的指针类型传递 ObjectForKey 的参数

iphone - 如何使用静态库中的可加载包?

iphone - 验证 iOS 应用程序

iphone - 如何在数据源更改时刷新我的 UI Picker View ?

encoding - 我可以强制 AWS CLI 使用 UTF 编码吗?

python - 在 Windows 中更改 Python 3 中的 “locale preferred encoding”

iphone - IOS程序如何存放数据库