服务器返回的数据将Unicode码转成汉字

当我们请求接口的时候,服务器会返回一些数据,当我们打印的时候就会发现,打印出来的是unicode码,不是汉字。

这时候需要我们自己手动处理一下,让打印的时候输出汉字的格式。

方法如下:

新增一个分类,在分类中,重写描述的方法,如下:

/**
 *  集合类型打log
 */
@implementation NSArray (log)

- (NSString *)description{
    return [self descriptionWithLocale:nil];
}

- (NSString *)descriptionWithLocale:(id)locale{
    NSMutableString * string = [[NSMutableString alloc]init];
    [string appendString:@"[\n"];
    for (int i = 0; i < self.count; i++) {
        [string appendFormat:@"\t第%d个 -- %@ \n",i,self[i] ];
    }
    [string stringByAppendingString:@"]\n"];
    return string;
}

@end

@implementation NSDictionary (Log)

- (NSString *)jsonDescription {
    // 参考了此博客 https://www.jianshu.com/p/f14b4cb1435b .
    // NSString默认使用的是UTF-16,转出UTF-8就能打印了
    NSError * error = nil ;
    NSData *data = [NSJSONSerialization dataWithJSONObject:self options:NSJSONWritingPrettyPrinted error:&error];

    if (error) {
        NSMutableString *strM = [NSMutableString stringWithString:@"{\n"];
        [self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
            [strM appendFormat:@"\t%@ = %@ ;\n", key, obj];
        }];
        [strM appendString:@"}\n"];
        return strM;

    }

    NSString *newString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    newString = [newString stringByReplacingOccurrencesOfString:@"\\" withString:@""] ;
    return newString ;
}

- (NSString *)description{
    return [self descriptionWithLocale:nil];
}

- (NSString *)descriptionWithLocale:(id)locale
{

    if ([NSJSONSerialization isValidJSONObject:self]) {
        return [self jsonDescription];
    }
    // 原来的写法,格式上有点问题,但是转中文是没问题的
    NSMutableString *strM = [NSMutableString stringWithString:@"{\n"];

    [self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
        [strM appendFormat:@"\t%@ = %@ ;\n", key, obj];
    }];

    [strM appendString:@"}\n"];

    return strM;
}

@end

原文地址:https://www.cnblogs.com/lyz0925/p/11609486.html

时间: 2024-10-08 08:11:32

服务器返回的数据将Unicode码转成汉字的相关文章

【04】AJAX接收服务器返回的数据

AJAX接收服务器返回的数据 readyState 和 status 属性 readyState 属性保存有 XMLHttpRequest 对象的交互状态,从 0 到 4 变化: 0 :未初始化(还没有调用send()方法): 1:载入(已调用send()方法,正在发送请求): 2:载入完成(send()方法执行完成,已经接收到全部响应数据): 3:交互(正在解析响应数据): 4:完成(响应数据解析完成,可以在客户端调用了). status 属性保存有 XMLHttpRequest 对象与后台交

服务器返回的各种HTTP状态码介绍

HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码.它由 RFC 2616 规范定义的,并得到RFC 2518.RFC 2817.RFC 2295.RFC 2774.RFC 4918等规范扩展. 所有状态码的第一个数字代表了响应的五种状态之一. 100系列码 从 100到199范围的HTTP状态码是信息报告码.基于各种原因考虑,大多数情况下我们 是很少看见这些代码的.首先,如果一个浏览器尝试访问一个网站,而网站返回这些代码时,它们往往都不会显示在

loadrunner中对服务器返回的数据选择性提交

在跟进项目的过程中,才体会到自己之前闷头看书再写小小的测试程序验证的学习方式很没有效率,知道动态关联,却也只是会参数化式的动态关联,这种关联是我们预先知道要提交的数据而进行的关联:更高一级的可能就是使用loadrunner自带的自动关联,对jsessionid和DSId进行关联,除此之外一无所知. 在项目中碰到的情况是:对输入框A进行参数化,假定当前参数数据为a1,参数化之后点击“查询”按钮,Server 返回a1的数据,选中a1进行提交.在这个过程中,根据参数不同Server返回的数据不同,且

AJAX MVC 服务器返回Json数据,客户端获取Json数据

<> 控制器 Controller using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Script.Serialization; namespace MvcApplication2.Controllers { public class HomeController : Controller { pu

服务器返回的各种HTTP状态码介绍(转)

HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码.它由 RFC 2616 规范定义的,并得到RFC 2518.RFC 2817.RFC 2295.RFC 2774.RFC 4918等规范扩展. 所有状态码的第一个数字代表了响应的五种状态之一. 100系列码 从100到199范围的HTTP状态码是信息报告码.基于各种原因考虑,大多数情况下我们 是很少看见这些代码的.首先,如果一个浏览器尝试访问一个网站,而网站返回这些代码时,它们往往都不会显示在屏

怎样获取从服务器返回的数据体

使用: xhr.response 属性, 可获得response body 内的数据, 注意, 这些数据类型不一样, 比如字符串 / 对象 / 二进制文件 等. var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (xhr.readyState === 4) { handler(xhr.response); } } 注意: 1. 如果返回的是xml或html, xhr.response会自动解析成网页

Unity Android 使用UnityWebRequest Post 数据后,没有获得服务器返回的数据

最近做一个项目,要用到http的get和post来跟服务器通讯. 然后使用UnityWebRequest来做,在PC上面全都是正常的,但是到了Android下,get是正常的,但是post,执行到yield return webRequest.SendWebRequest就停住没有往下执行了,接着就超时了. 搞了两天发现,好像是因为服务器没有支持100-Continue这个属性,但是unity是默认true的. 将UnityWebRequest .useHttpContinue设置为false,

datatables 服务器返回数据后的处理-表格数据属性的操作方法(ajax.dataSrc)

http://dt.thxopen.com/reference/option/ajax.dataSrc.html http://datatables.net/reference/option/ajax.dataSrc 通过 Ajax,从一个文件获取 JSON 数据,使用 dataSrc属性把 data改为 tableData (比如: { tableData: [ ...data... ] } ) $('#example').dataTable( {   "ajax": {     &

猫猫学iOS之去除服务器返回数据中的html标签,去除指定字符串,替换字符串

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 一:问题 如图中,服务器返回的数据里面有大串的html 但是我们只用字符串,由于不想麻烦后台修改数据....(喵很为别人着想)于是自己想办法解决. 其实解决的方法很多很多..比如用字符串的截取方法的到range,然后根据位置来得到里面的想要的东东..嘎的,想想都崩溃. 还有呢用正则表达式等等...正则表达式,说实话这东西除了面试时候说说和学习时候用过做项目还从来