ios基本编码格式转换UTF8

iOS中编码转化

1.UTF-8转化

NSString *data = @"你好,北京!";

//转换成UTF-8

NSString *dataUTF8 = [data stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSLog(@"%@",dataUTF8);

//UTF-8转GBK,将UTF8代码替换,官方解释如下。

//Replaces all percent escapes with the matching characters as determined by the given encoding.  Returns nil if the transformation is not possible (i.e. the percent escapes give a byte sequence not legal in the given encoding).  See CFURLCreateStringByReplacingPercentEscapes in CFURL.h for more complex transformations

NSString *dataGBK = [dataUTF8 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSLog(@"%@",dataGBK);

在Xcode4.2中执行结果如下:

将上述方法封装,如下:

 1 //Unicode转UTF-8
 2
 3
 4
 5 + (NSString *)encodeToPercentEscapeString: (NSString *) input
 6
 7 {
 8
 9     // Encode all the reserved characters, per RFC 3986
10
11     // (<http://www.ietf.org/rfc/rfc3986.txt>)
12
13     NSString *outputStr = (NSString *)
14
15     CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
16
17                                             (CFStringRef)input,
18
19                                             NULL,
20
21                                             (CFStringRef)@"!*‘();:@&=+$,/?%#[]",
22
23                                             kCFStringEncodingUTF8);
24
25     return outputStr;
26
27 }
28
29
30
31 + (NSString *)decodeFromPercentEscapeString: (NSString *) input
32
33 {
34
35     NSMutableString *outputStr = [NSMutableString stringWithString:input];
36
37     [outputStr replaceOccurrencesOfString:@"+"
38
39                                withString:@" "
40
41                                   options:NSLiteralSearch
42
43                                     range:NSMakeRange(0, [outputStr length])];
44
45
46
47     return [outputStr stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
48
49 }

2.UTF-8和Unicode转化

 1 //Unicode转UTF-8
 2
 3 + (NSString*) replaceUnicode:(NSString*)aUnicodeString
 4
 5 {
 6
 7     NSString *tempStr1 = [aUnicodeString stringByReplacingOccurrencesOfString:@"\\u" withString:@"\\U"];
 8
 9     NSString *tempStr2 = [tempStr1 stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];
10
11     NSString *tempStr3 = [[@"\"" stringByAppendingString:tempStr2] stringByAppendingString:@"\""];
12
13     NSData *tempData = [tempStr3 dataUsingEncoding:NSUTF8StringEncoding];
14
15     NSString* returnStr = [NSPropertyListSerialization propertyListFromData:tempData
16
17                                                            mutabilityOption:NSPropertyListImmutable
18
19                                                                      format:NULL
20
21                                                            errorDescription:NULL];
22
23
24
25     return [returnStr stringByReplacingOccurrencesOfString:@"\\r\\n" withString:@"\n"];
26
27 }
28
29
30
31
32
33 +(NSString *) utf8ToUnicode:(NSString *)string
34
35 {
36
37     NSUInteger length = [string length];
38
39     NSMutableString *s = [NSMutableString stringWithCapacity:0];
40
41     for (int i = 0;i < length; i++)
42
43     {
44
45         unichar _char = [string characterAtIndex:i];
46
47         //判断是否为英文和数字
48
49         if (_char <= ‘9‘ && _char >= ‘0‘)
50
51         {
52
53             [s appendFormat:@"%@",[string substringWithRange:NSMakeRange(i, 1)]];
54
55         }
56
57         else if(_char >= ‘a‘ && _char <= ‘z‘)
58
59         {
60
61             [s appendFormat:@"%@",[string substringWithRange:NSMakeRange(i, 1)]];
62
63
64
65         }
66
67         else if(_char >= ‘A‘ && _char <= ‘Z‘)
68
69         {
70
71             [s appendFormat:@"%@",[string substringWithRange:NSMakeRange(i, 1)]];
72
73
75         }
76
77         else
78
79         {
80
81             [s appendFormat:@"\\u%x",[string characterAtIndex:i]];
82
83         }
84
85     }
86
87     return s;
88
89 }
时间: 2024-11-08 19:28:55

ios基本编码格式转换UTF8的相关文章

object-c NSString 转成特定编码格式如utf8、gbk等

有两种方式 第一种是先转换成特定编码格式NSDATA 第二种是先转换成特定编码格式char *(cString) 转成gbk: 第一种: - (NSString *) utf82gbk:(NSString *)string {    NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);    NSData *data = [string dataUsing

Java文件编码格式转换

转自博文<Java文件编码格式转换>: 默认被转换的格式为GBK,转换成的格式为UTF-8 import info.monitorenter.cpdetector.CharsetPrinter; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException

将字符串的编码格式转换为utf-8

方式一: /** * 将字符串的编码格式转换为utf-8 * * @param str * @return Name = new * String(Name.getBytes("ISO-8859-1"), "utf-8"); */ public static String toUTF8(String str) { if (isEmpty(str)) { return ""; } try { if (str.equals(new String(st

NSString 转换 UTF8

/** *  NSString 转换 UTF8声明 */ + (NSString *)UtfToString:(NSString *)newstring; /** *  NSString 转换 UTF8实现 */ +(NSString *)UtfToString:(NSString *)newstring{ return [newstring stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAl

如何设置python的编码格式为utf-8

重装了系统(ubuntu 14.04)原来正常可用的OpenERP项目在切换到开发者模式的时候报错: UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128) 而在服务器上的项目正常可用,其原因是由于python的默认编码设置为ascii,可以用以下命令查看: import sys sys.getdefaultencoding() 解决方案有两种: 1. 在项

Source Insight完美转换UTF-8 到 GB2312

前言 很多人用source insight 打开某些源码文件时,汉字显示为一堆乱码.这个问题是因为编码方式不同.记事本和一些编辑器默认编码方式是ANSI,在这种方式下输入汉字,其实就是GB系列的编码方式.不幸的是,广收欢迎的代码查看工具Source insight 虽然支持汉字,但是它不支持UTF-8.笔者感到疑惑的是,当初开发source insight的这帮人现在哪里去了?这么好的工具,却不再更新了,实在让人可惜. 可惜归可惜,程序还是要看.乱码怎么办?用记事本打开源代码逐个转换的笨方法虽然

iOS中NSString转换成HEX(十六进制)-NSData转换成int

http://www.2cto.com/kf/201402/281501.html 1 2 3 4 5 6 NSString *str = @"0xff055008"; //先以16为参数告诉strtoul字符串参数表示16进制数字,然后使用0x%X转为数字类型 unsigned long red = strtoul([str UTF8String],0,16); //strtoul如果传入的字符开头是“0x”,那么第三个参数是0,也是会转为十六进制的,这样写也可以: unsigned

Linux字符编码转换 UTF8转GB3212

在LINUX上进行编码转换时,既可以利用iconv函数族编程实现,也可以利用iconv命令来实现,只不过后者是针对文件的,即将指定文件从一种编码转换为另一种编码.    一.利用iconv函数族进行编码转换    iconv函数族的头文 在LINUX上进行编码转换时,既可以利用iconv函数族编程实现,也可以利用iconv命令来实现,只不过后者是针对文件的,即将指定文件从一种编码转换为另一种编码.    一.利用iconv函数族进行编码转换    iconv函数族的头文件是iconv.h,使用前

[转载]eclipse中设置文件的编码格式为utf-8

免责声明:     本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除.     原文作者:ryxxlong     原文地址:http://ryxxlong.iteye.com/blog/788469 1.可以在 eclipse 中配置 workspace 项下 text file encoding 属性的值来决定此工作区间下所有的 eclipse 项目的文档的编码属性. Window-->Preferences-->General-->Workspace