首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查NSData是否包含ASCII码或UTF8编码

检查NSData是否包含ASCII码或UTF8编码
EN

Stack Overflow用户
提问于 2012-03-22 23:33:57
回答 2查看 12.2K关注 0票数 1

我正在检索包含UTF8或ASCII编码文本的超文本标记语言。最常见的用法是ASCII解码,它可以正确显示文本:

代码语言:javascript
复制
NSString *responseString    =   [[NSString alloc] initWithData:responseData encoding:NSASCIIStringEncoding];

现在我有了另一个使用UTF8编码的超文本标记语言页面,所以我必须使用:

代码语言:javascript
复制
NSString *responseString    =   [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

在加载网站时,我检索的编码类型是随机的。我的问题是,有没有一种方法可以检查NSData,以确定使用哪种解码的权利?所以我知道我需要使用哪种编码类型。

太好了!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-23 00:27:59

我不知道是否可以检查NSData的编码,所以我这样做了:

代码语言:javascript
复制
NSString *dataStr;
dataStr = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; 
if (!dataStr)
{
    NSLog(@"ASCII not working, will try utf-8!");
    dataStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}
//Do stuff with dataStr
票数 4
EN

Stack Overflow用户

发布于 2012-03-23 17:47:37

虽然Heliem answer很有用,但如果ASCII和UTF8都返回一个字符串,那就不是一个解决方案。例如: UTF8给了我一些额外的字符(负结果),而ASCII码显示了正确的字符(正结果)。我现在使用以下代码:

代码语言:javascript
复制
NSString *responseString, *responseStringASCII, *responseStringUTF8;

responseStringASCII = [[NSString alloc] initWithData:responseData encoding:NSASCIIStringEncoding]; 
if (!responseStringASCII)
{
   // ASCII is not working, will try utf-8!

    responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
}
else
{
    //  ASCII is working, but check if UTF8 gives less characters

    responseStringUTF8  = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

    if(responseStringUTF8 != nil && [responseStringUTF8 length] < [responseStringASCII length])
    {
        responseString  =   [responseStringUTF8 retain];
    }
    else 
    {
        responseString  =   [responseStringASCII retain];
    }

    [responseStringUTF8 release];
}

[responseStringASCII release];
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9825542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档