iOS开发之网络数据解析--中文输出
对于服务器返回的数据,解析之后直接打印,如果数据中原本有中文,可能会出现中文乱码的结果:

为了避免这个问题,可以通过类别来重写系统和打印相关的方法。
步骤:
1、新建文件名:Foundation+Log的.m后缀的这一个文件,你没看错,就这个.m文件,不需要.h声明文件
2、然后把以下源码全部拷贝进去即可:
//
// NSDictionary+Log.m
// 01-掌握-多值参数和中文输出
// #import <Foundation/Foundation.h> // 重写系统的打印方法,
// 需要知道的是NSDictionary和NSArray各自都有打印方法
// 也就是说,你重写了NSArray打印重写方法,打印NSArray对象才会执行重写的方法 // 如果是通过子类来重写父类系统的方法,那么使用的时候就需要导入这个子类
// 但是通过类别重写系统方法,就不需要import导入,因为系统中导入了已经有了同名的被重写的方法了,系统会优先加载类别里的重写的方法,连.h声明文件都可以不用了,因为系统中已经有.h声明文件 @implementation NSDictionary (Log) //控制输出:对字典或者是数组进行排版
-(NSString *)descriptionWithLocale:(id)locale
{
NSMutableString *string = [NSMutableString string];
//设置开始
[string appendString:@"{\n"]; //设置key-value
[self enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
[string appendFormat:@"%@:",key];
[string appendFormat:@"%@,\n",obj];
}];
//设置结尾
[string appendString:@"}"]; //删除最后的逗号
NSRange range = [string rangeOfString:@"," options:NSBackwardsSearch];
if (range.location != NSNotFound) {
[string deleteCharactersInRange:range];
}
return string;
} /*
-(NSString *)descriptionWithLocale:(id)locale indent:(NSUInteger)level
{
NSMutableString *string = [NSMutableString string];
//设置开始
[string appendString:@"{"]; //设置key-value
[self enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) { [string appendFormat:@"%@:",key];
[string appendFormat:@"%@",obj];
}];
//设置结尾
[string appendString:@"}"];
return string;
}
*/
@end @implementation NSArray (Log) //控制输出:对字典或者是数组进行排版
-(NSString *)descriptionWithLocale:(id)locale
{
NSMutableString *string = [NSMutableString string];
//设置开始
[string appendString:@"["]; //设置key-value
[self enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
[string appendFormat:@"%@,",obj]; }];
//设置结尾
[string appendString:@"]"]; NSRange range = [string rangeOfString:@"," options:NSBackwardsSearch];
if (range.location != NSNotFound) {
[string deleteCharactersInRange:range];
} return string;
} @end

相关源码百度云分享链接: http://pan.baidu.com/s/1jGUWkrc 密码: 9yq6
iOS开发之网络数据解析--中文输出的更多相关文章
- iOS开发之网络数据解析(二)--XML解析简介
前言:本篇随笔介绍的是XML解析. 正文: 1.XML解析方式有2两种: DOM:一次性将整个XML数据加载进内存进行解析,比较适合解析小文件 SAX:从根元素开始,按顺序一个元素一个元素往下解析,比 ...
- iOS开发之网络数据解析(一)--JSON解析简介
前言:对服务器请求之后,返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) 本篇随便先讲解JSON解析. 正文: 关于JSON: JSON是一种轻量级的数据格式,一般用于数据交互 ...
- iOS开发之网络数据解析--GDataXML解析框架的使用
前言:GDataXML是google基于C语言libxml2写的第三方框架,该源码文件就一个类,看其源码,基本使用了C语言的底层的很多lib编译库代码,所以刚导入使用,会报错提示需要设置导入需要的 ...
- ios开发之网络数据的下载与上传
要实现网络数据的下载与上传,主要有三种方式 > NSURLConnection 针对少量数据,使用“GET”或“POST”方法从服务器获取数据,使用“POST”方法向服务器传输数据; > ...
- iOS开发——XML/JSON数据解析
NSJSONSerialization 接下来就正式开始.苹果官方给出的解析方式是性能最优越的,虽然用起来稍显复杂. 首先我们在上面已经有了我希望得到的信息的网站的API给我们的URL,在OC中,我要 ...
- iOS开发系列--网络开发
概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力 ...
- iOS开发之网络编程--5、NSURLSessionUploadTask+NSURLSessionDataDelegate代理上传
前言:关于NSURLSession的主要内容快到尾声了,这里就讲讲文件上传.关于文件上传当然就要使用NSURLSessionUploadTask,这里直接讲解常用的会和代理NSURLSessionDa ...
- iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载+使用输出流代替文件句柄
前言:本篇讲解,在前篇iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载的基础上,使用输出流代替文件句柄实现大文件断点续传. 在实际开发中,输入输出流用的比较少,但 ...
- IOS开发之网络开发工具
IOS开发之网络开发工具 做移动端开发 常常会涉及到几个模块:1.网络检測 2.网络请求get和post请求 3.文件上传 4.文件下载 5.断点续传 如今将这些一一分享给大家 ,也欢迎 ...
随机推荐
- 斐波那契堆(二)之 C++的实现
概要 上一章介绍了斐波那契堆的基本概念,并通过C语言实现了斐波那契堆.本章是斐波那契堆的C++实现. 目录1. 斐波那契堆的介绍2. 斐波那契堆的基本操作3. 斐波那契堆的C++实现(完整源码)4. ...
- RTX发送消息提醒实现以及注意事项
一.RTX简介 RTX是腾讯公司推出的企业级即时通信平台.该平台定位于降低企业通信费用,增强企业内部沟通能力,改善企业与客户之间的沟通渠道,创造新兴的企业沟通文化,提高企业生产力.RTX平台的主要功能 ...
- Android 学习笔记之ContentProvider实现数据共享....
PS:最近听老师说打算让我参与企业的app制作,让我加快学习的进度...好吧,貌似下周还有考试...貌似实验室这个app也要做...暂时不管了...那就只能加快进度了,感觉略微的有点激动和紧张,总算是 ...
- redis配置文件
# redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => bytes # 1kb => ...
- 环信SDK与Apple Watch的结合(1)
该系列是记录在apple watch上开发IM,用到了最近挺流行的环信IM SDK. 一.先来一段网上随处可查到的信息: 1.两种分辨率 1.65寸 312*390 1.5寸 272*340 2.开发 ...
- JS Date.Format
// 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占 ...
- 【循序渐进学Python】7.面向对象的核心——类型(上)
我们知道Python是一门面向对象的脚本语言.从C#的角度来看:首先Python支持多继承.Python 类型成员通常都是public的,并且所有成员函数都是virtual的(可以直接重写). 1. ...
- MySQL SQL模式匹配
MySQL提供标准的SQL模式匹配,SQL模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零字符).. 关于SQL模式匹配:http://dev.mysql.com/doc/r ...
- 【学习整理】Tarjan:强连通分量+割点+割边
Tarjan求强连通分量 在一个有向图中,如果某两点间都有互相到达的路径,那么称中两个点强联通,如果任意两点都强联通,那么称这个图为强联通图:一个有向图的极大强联通子图称为强联通分量. 算法可以在 ...
- KMA & ex_KMP---Revolving Digits
HDU 4333 Description One day Silence is interested in revolving the digits of a positive integer. I ...