IOS汉字编码转化

原创 2015年07月08日 10:30:25
  • Unicode转化为汉字

+ (NSString *)replaceUnicode:(NSString *)unicodeStr {  

    

   NSString *tempStr1 = [unicodeStrstringByReplacingOccurrencesOfString:@"\\u"withString:@"\\U"];  

   NSString *tempStr2 = [tempStr1stringByReplacingOccurrencesOfString:@"\""withString:@"\\\""];  

   NSString *tempStr3 = [[@"\""stringByAppendingString:tempStr2]stringByAppendingString:@"\""];  

   NSData *tempData = [tempStr3dataUsingEncoding:NSUTF8StringEncoding];  

   NSString* returnStr = [NSPropertyListSerializationpropertyListFromData:tempData  

                                                          mutabilityOption:NSPropertyListImmutable   

                                                                    format:NULL  

                                                          errorDescription:NULL];  

    

   return [returnStrstringByReplacingOccurrencesOfString:@"\\r\\n"withString:@"\n"];  

    

}


  • 汉字与utf8相互转化

 NSString* strA = [@"%E4%B8%AD%E5%9B%BD"stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

 NSString *strB = [@"中国"stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];


  • NSString 转化为utf8

 NSString *strings = [NSStringstringWithFormat:@"abc"];

    

    NSLog(@"strings : %@",strings);

    

   CF_EXPORT

    CFStringRef CFURLCreateStringByAddingPercentEscapes(CFAllocatorRef allocator,CFStringReforiginalString,CFStringRef charactersToLeaved, CFStringReflegalURLCharactersToBeEscaped,CFStringEncoding encoding);

    

    NSString *encodedValue = (__bridge NSString*)CFURLCreateStringByAddingPercentEscapes(nil,                                    (__bridgeCFStringRef)strings,nil, (CFStringRef)@"!*'();:@&=+$,/?%#[]",kCFStringEncodingUTF8);





  • iso8859-1 到 unicode编码转换

  

+ (NSString *)changeISO88591StringToUnicodeString:(NSString *)iso88591String

{

    

    NSMutableString *srcString = [[[NSMutableString alloc]initWithString:iso88591String] autorelease];

    

    [srcString replaceOccurrencesOfString:@"&" withString:@"&" options:NSLiteralSearchrange:NSMakeRange(0, [srcString length])];

    [srcString replaceOccurrencesOfString:@"&#x" withString:@"" options:NSLiteralSearchrange:NSMakeRange(0, [srcString length])];

        

    NSMutableString *desString = [[[NSMutableString alloc]initautorelease];

    

    NSArray *arr = [srcString componentsSeparatedByString:@";"];

    

    for(int i=0;i<[arr count]-1;i++){

        

        NSString *v = [arr objectAtIndex:i];

        char *c = malloc(3);

        int value = [StringUtil changeHexStringToDecimal:v];

        c[1] = value  &0x00FF;

        c[0] = value >>8 &0x00FF;

        c[2] = '\0';

        [desString appendString:[NSString stringWithCString:c encoding:NSUnicodeStringEncoding]];

        free(c);

    }

    

    return desString;

}




Q: Is there a standard method to package a Unicode character so it fits an 8-Bit ASCII stream?

A: There are three or four options for making Unicode fit into an 8-bit format.

a) Use UTF-8. This preserves ASCII, but not Latin-1, because the characters >127 are different from Latin-1. UTF-8 uses the bytes in the ASCII only for ASCII characters. Therefore, it works well in any environment where ASCII characters have a significance as syntax characters, e.g. file name syntaxes, markup languages, etc., but where the all other characters may use arbitrary bytes. 
Example: “Latin Small Letter s with Acute” (015B) would be encoded as two bytes: C5 9B.

b) Use Java or C style escapes, of the form \uXXXXX or \xXXXXX. This format is not standard for text files, but well defined in the framework of the languages in question, primarily for source files.
Example: The Polish word “wyjście” with character “Latin Small Letter s with Acute” (015B) in the middle (ś is one character) would look like: “wyj\u015Bcie".

c) Use the &#xXXXX; or &#DDDDD; numeric character escapes as in HTML or XML. Again, these are not standard for plain text files, but well defined within the framework of these markup languages.
Example: “wyjście” would look like “wyj&#x015B;cie"

d) Use SCSU. This format compresses Unicode into 8-bit format, preserving most of ASCII, but using some of the control codes as commands for the decoder. However, while ASCII text will look like ASCII text after being encoded in SCSU, other characters may occasionally be encoded with the same byte values, making SCSU unsuitable for 8-bit channels that blindly interpret any of the bytes as ASCII characters.
Example: “<SC2> wyjÛcie” where <SC2> indicates the byte 0x12 and “Û” corresponds to byte 0xDB. [AF] & [KW]


如c所描述,这是一种“未标准"但广泛采用的做法,说是山寨编码也行 :-)

所以编码过程是

字符串 -> Unicode编码 -> &#xXXXX; or &#DDDDD; 

解码过程反过来即可 




http://unicode.org/faq/utf_bom.html#General



IOS汉字编码转化 分类: IOS

Unicode转化为汉字 + (NSString *)replaceUnicode:(NSString *)unicodeStr {           NSStri...
  • yjw179
  • yjw179
  • 2013年12月05日 11:11
  • 373

不同编码情况下字符转换方法

在实验室做项目,中间遇到很多次这种字符转换的问题。一直都是简单看看,也没有认真分析过问题的原因,直到上次一直弄不出来,这里就仔细整理了一下,希望大家可以参考一下。 VS2010环境下默认使用UNI...
  • baidu_28563321
  • baidu_28563321
  • 2015年09月14日 13:09
  • 572

汉字编码(1 基础知识)

4.1)基础知识4.1.1) GB2312范围:0xA1A1--0xFEFE汉字范围:0xB0A1--0xF7FE编码方式:GB2312规 定"对任意一个图形字符都采用两个字节表示,每个字节均采用七位...
  • wqf363
  • wqf363
  • 2007年01月01日 21:13
  • 2261

汉字编码1

 汉字编码规则 汉字编码规则(1980年)一共收录了7445个字符包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0(176)-F7(247),低字节从A1(161)-FE(254),...
  • ecjtuync
  • ecjtuync
  • 2007年09月09日 18:56
  • 831

[iOS]通过JS调用iOS函数时的URL编码问题

在前面的文章:[iOS]在WebApp中如何使用JS调用iOS的函数 中,提到了如何使用JS通过修改URL调用iOS的内部函数。其中会遇到一个问题,就是编码问题,比如通过URL调用弹窗,在里面写上内容...
  • wxg694175346
  • wxg694175346
  • 2014年06月10日 15:05
  • 1776

中文字符ASCII码和NSString相互转换

在xcode中,文件以utf8格式保存。因此,其中变量对象也是以utf8格式保存。不同语言的utf8编码不一样,英文的utf8编码和ascii码一样。 不同语言的每个字符的utf8编码的字节数不一样,...
  • mikixiyou
  • mikixiyou
  • 2013年09月12日 16:18
  • 10411

汉字编码标准

汉字编码标准 GB2312范围: 0xA1A1 - 0xFEFE汉字范围: 0xB0A1 - 0xF7FEGBK范围: 0x8140 - 0xFEFEBIG5范围: 0xA140 - 0xF9FE, ...
  • hxxiaopei
  • hxxiaopei
  • 2009年03月14日 11:23
  • 2480

python 汉字编码

在处理一段文本的时候,首先了解文本的汉字编码。在windows下默认的文件编码是GBK,而 linux的一般是utf-8. 想要查看文件的编码方式,使用vim打开文本,然后在命令行模式下输入:...
  • u011385365
  • u011385365
  • 2015年09月02日 13:54
  • 463

iOS 常用的rgb颜色表-精华版

常用RGB颜色表 分类: iOS OC2014-05-24 21:35 224人阅读 评论(0) 收藏 举报 RGB颜色表 目录(?)[+] ...
  • yuyezhulan
  • yuyezhulan
  • 2014年11月21日 10:46
  • 3530

汉字编码

    字符是一切文本处理中最基本的单位.中文文本里一般出现的是双字节的中文,有时也有单字节字符.要对中文文本进行分析,首先要掌握中文编码的规则.中文编码包括内码和外码两种,我们在对自然语言进行处理时...
  • MinistoneNap
  • MinistoneNap
  • 2006年12月04日 21:17
  • 964
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS汉字编码转化
举报原因:
原因补充:

(最多只允许输入30个字)