在使用NSArray打印的时候如果遇到中文字符那么会打印出来编码。

在使用NSArray打印的时候如果遇到中文字符那么会打印出来编码,如下代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    NSArray *array = @[@"张三",@"lisi",@"123"];
    NSLog(@"%@",array);
    // 

}

运行之后:

2015-09-29 12:37:35.713 03-log的技巧[2233:66890] (
    "\U5f20\U4e09",
    lisi,
    123
)

这里的“张三”就被打印成了"\U5f20\U4e09”(注:利用for循环遍历是不会出现这个问题的)。如果我们需要解决这个问题,那么我们就需要给NSArray写一个分类,来进行更改,代码如下:

#import "NSArray+Log.h"

@implementation NSArray (Log)
/**
 *  根据设置的本地化数据设置数组
 *
 *  由于我们在打印这个数组的时候,如果遇到有中文的时候它打印出来的是编码格式,而不是中文文字(for循环遍历除外)
 *  这个时候如果我们想让它能正常显示的话,我们就需要重写这个方法。
 *  @return <#return value description#>
 */
-(NSString *)descriptionWithLocale:(id)locale
{
    // 1.首先拼接一个括号  我们的目的是让数组打印出来的时候和系统打印的格式一致。
    /**
     (
        zhangsan,
        lisi,
        wangwu
     )
     */
    NSMutableString *mutabStr = [NSMutableString stringWithString:@"(\n"];

    [self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        [mutabStr appendFormat:@"\t %@,\n",obj];
    }];
    [mutabStr appendFormat:@")"];
    return mutabStr;
}
@end

此时打印出的结果是:

2015-09-29 12:41:54.894 03-log的技巧[2272:68398] (
     张三,
     lisi,
     123,
)
时间: 2024-08-28 13:40:26

在使用NSArray打印的时候如果遇到中文字符那么会打印出来编码。的相关文章

设置SecureCRT打印中文字符

1. 设置方法 使用SecureCRT打印由STM32发送的中文字符提示信息,显示乱码.在网上找了一些链接,再加上自己摸索,终于出了能够让SecureCRT打印中文的方法. 设置以下几个地方即可. 1.1 Terminal--->Emulation,选择右侧的Terminal值为ANSI: 1.2 Terminal--->Appearance,选择Current color scheme的值为Monochrome:选择Character encoding的值为简体中文GB2312. 以下是设置

java,编写一个从1循环到150并在每行打印一个值,另外在每个3的倍数行上打印出foo,在每个5的倍数行上打印biz,在每个7的倍数上打印baz.

需求:编写一个从1循环到150并在每行打印一个值,另外在每个3的倍数行上打印出foo,在每个5的倍数行上打印biz,在每个7的倍数上打印baz. package study01; public class For { public static void main(String[] args) { for(int i = 1;i<=150;i++){ System.out.print(i); if(i%3==0){ System.out.print(" foo"); } if(i

做NSArray分类,能正常显示中文

NSArray+Log.m 1 #import "NSArray+Log.h" 2 3 @implementation NSArray (Log) 4 5 - (NSString *)descriptionWithLocale:(id)locale 6 { 7 // 遍历数组中的所有内容,将内容拼接成一个新的字符串返回 8 NSMutableString *strM = [NSMutableString string]; 9 10 [strM appendString:@"(

WPF win7+vs2010开发的打印功能,怎么在XP系统上无法打印

在wpf 中打印功能很强大,但最近是在win7上可以但是布置到xp上就不可以了,查了好多资料终于知道怎么回事了原来xp里没有.net framework3.5 安装一个就OK了要先安装4.0. WPF win7+vs2010开发的打印功能,怎么在XP系统上无法打印

多个线程实现顺序打印数据,(可自定义线程一次打印数量和总数量)

最近看到一道面试题:让3个线程顺序打印数字,如线程1打印1-5,线程2打印6-10,线程3打印11-15,然后是线程1打印16-20...一直打印到75结束. 这到题主要问题有两点: 第一点是不能让线程打印的过程中出现其他线程 第二点是要实现线程进入的过程是有序的,如上123123..这样. 我先是把基本的功能实现了,后来发现可以改造一下,做成可扩展的,即每次打印的数量可自定义,总的数量可自定义,并且保证线程的顺序是有序的,下面是具体代码: PrintQueue.java 文件,同步线程,控制打

java算法面试题:有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数 按值的降序排序,如果值相同则按键值的字母顺序

package com.swift; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; public class Zhongwen_Shuzi_Times { public static void main(String[] args) { /* * 有一个字符串,其中包含中文字符.英文字符和数字字符,请统计和打印出各个字符的个数 */ String str="琅琊榜fengqichanglin

有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。 有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数

1.有一个字符串,其中包含中文字符.英文字符和数字字符,请统计和打印出各个字符的个数. Map接口定义的集合又称查找表,用于存储所谓"Key-Value"映射对.Key可以看成是Value的索引,作为Key的对象在集合中不可以重复. import java.util.HashMap; import java.util.Map; public class Demo { public static void main(String[] args) throws Exception{ Str

打印任务栏出现“正在删除-已暂停-正在打印“的解决

标题:打印任务栏出现"正在删除-已暂停-正在打印"的解决如图: 当出现这样的问题的时候,你发现你根本无法打印的,我尝试过的方法有:1.ping打印机,发现可以ping通,问题没有解决2.查看打印状态,"暂停"的√有没有勾选上,问题没有解决3.使用脱机打印,问题没有解决4.关闭打印机,然后再重启,问题没有解决5.关闭打印机,在有问题的这台电脑上面把打印服务关闭掉,然后稍微等一会儿开启打印服务,再开机,发现其它人不影响打印,问题的关键还是这台电脑上面 解决问题的办法有:

vue常用插件之打印功能、二维码插件、批量打印二维码

vue实现打印的两种方法 vue实现批量打印二维码 (需安装二维码插件qrcodejs2) 一.vue-print-nb插件 1.安装: npm i vue-print-nb -S 2.全局注册(main.js): import Print from 'vue-print-nb' Vue.use(Print) 3.使用: <div id="printTest" > <p>锄禾日当午</p> <p>汗滴禾下土 </p> <