IOS字符编码

字符编码经常能听到的有Unicode、UTF-8、GBK、GB2312、GB18030、BIG5等。这些编码方式都有什么区别呢?

其实这些编码,大体分两类:全球统一编码和各过个语种的独立编码

1.全球统一编码

Unicode是典型的全球统一编码。不管在那个国家,同一个字的unicode字符都是一样的。常用的unicode字符为2个字节,也有4个字节编码。

UTF8是unicode的一种编码方式。对应2字节的unicode,utf8为1字节(英文)或3字节(中文)。实际情况比这复杂,这里只说明常用情况

2.各国独立编码

GBK、GB2312、GB18030都是简体中文的编码。GB2312是GBK的子集,GBK是GB18030的子集。

BIG5是台湾使用的繁体中文编码。

其他非英文国家也有自己的编码,例如日语和韩语。

3. IOS中的应用

ios中可以将NSData做为参数,用来初始化NSString

 - (id)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding;

对于常用的编码方式可以简单这样写:

     NSString *text =[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

可以按住Command键点击NSStringEncoding, 切换到定义处查看

 enum {
NSASCIIStringEncoding = , /* 0..127 only */
NSNEXTSTEPStringEncoding = ,
NSJapaneseEUCStringEncoding = ,
NSUTF8StringEncoding = ,
NSISOLatin1StringEncoding = ,
NSSymbolStringEncoding = ,
NSNonLossyASCIIStringEncoding = ,
NSShiftJISStringEncoding = , /* kCFStringEncodingDOSJapanese */
NSISOLatin2StringEncoding = ,
NSUnicodeStringEncoding = ,
NSWindowsCP1251StringEncoding = , /* Cyrillic; same as AdobeStandardCyrillic */
NSWindowsCP1252StringEncoding = , /* WinLatin1 */
NSWindowsCP1253StringEncoding = , /* Greek */
NSWindowsCP1254StringEncoding = , /* Turkish */
NSWindowsCP1250StringEncoding = , /* WinLatin2 */
NSISO2022JPStringEncoding = , /* ISO 2022 Japanese encoding for e-mail */
NSMacOSRomanStringEncoding = , NSUTF16StringEncoding = NSUnicodeStringEncoding, /* An alias for NSUnicodeStringEncoding */ NSUTF16BigEndianStringEncoding = 0x90000100, /* NSUTF16StringEncoding encoding with explicit endianness specified */
NSUTF16LittleEndianStringEncoding = 0x94000100, /* NSUTF16StringEncoding encoding with explicit endianness specified */ NSUTF32StringEncoding = 0x8c000100,
NSUTF32BigEndianStringEncoding = 0x98000100, /* NSUTF32StringEncoding encoding with explicit endianness specified */
NSUTF32LittleEndianStringEncoding = 0x9c000100 /* NSUTF32StringEncoding encoding with explicit endianness specified */
};
typedef NSUInteger NSStringEncoding;

对于不常用的编码方式,需要这样用:

     NSStringEncoding encode = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSString *text = [[NSString alloc] initWithData:data encoding:encode];

枚举CFStringEncodings中定义了很多编码方式。简体中文相关的是这三个

     kCFStringEncodingGB_2312_80 = 0x0630,
kCFStringEncodingGBK_95 = 0x0631, /* annex to GB 13000-93; for Windows 95 */
kCFStringEncodingGB_18030_2000 = 0x0632,

IOS上的字符编码的更多相关文章

  1. Python2与Python3字符编码的区别

    目录 字符编码应用之Python(掌握) 执行Python程序的三个阶段 Python2与Python3字符串类型的区别(了解) Python2 str类型 Unicode类型 Python3 字符编 ...

  2. python2与python3 字符问题以及 字符编码 内容总结

    python2与python3默认编码: python2:gbk                   print( u'上' )     操作系统也是 gbk    python3:unicode p ...

  3. c/c++ 字符编码与标识符

    说明: 对于比较现代的语言来讲字符编码不是个大问题:java就可以使用中文作为变量名称,但对于C/C++来讲却不是这样,由于历史原因,标准和编译器厂商的实现总在不停的变化,相关编码信息到底是如何处理的 ...

  4. python——字符编码

    Unicode 是字符集 UTF-8 是编码规则 Unicode:给每一个字符分配一个唯一的ID(又称码位). 编码规则:将码位转换为字节序列的规则. 1.什么是字符编码:字符翻译成数字,所遵循的标准 ...

  5. Python2和3字符编码的区别

    Python2和3字符编码的区别 一.字符编码应用之Python 1.1 执行Python程序的三个阶段 Python test.py(我再强调一遍,执行test.py的第一步,一定是先将文件内容从硬 ...

  6. 彻底搞懂Python的字符编码

    前言:中文编码问题一直是程序员头疼的问题,而Python2中的字符编码足矣令新手抓狂.本文将尽量用通俗的语言带大家彻底的了解字符编码以及Python2和3中的各种编码问题. 一.什么是字符编码. 要彻 ...

  7. Unity3d发布的iOS产品中使用GB2312字符编码(CP936)

    最近在开发中要用到GB2312字符编码(CP936),在C#代码中便有了如此代码 System.Text.Encoding.GetEncoding() 这在Unity3d 编辑器下运行没有任何问题,打 ...

  8. 上传XML文件字符编码问题

    1.上传的XML文件的空格的字符编码和倒入到数据库的空格的字符编码不是一种编码格式,导致导入到数据库的数据和XML文件的数据不一致的情况,进而使展示到界面上的数据在进行搜索时不能搜索出来.解决办法: ...

  9. python基础之Day7part2 史上最清晰字符编码理解

    二.字符编码 基础知识: 文本编辑器存取文件原理与py执行原理异同: 存/写:进入文本编辑器 写内容 保存后 内存数据刷到硬盘 取/读:进入文本编辑器 找到内容 从硬盘读到内存 notepad把文件内 ...

随机推荐

  1. linux后台执行命令&

    当在前台运行某个作业时,终端被该作业占据:而在后台运行作业时,它不会占据终端.可以使用&命令把作业放到后台执行. 如:30 2 * * * /data/app/scripts/hotbacku ...

  2. struts2总结五: Strut2 访问Servlet API

    一.间接访问 public String execute() throws Exception { this.message="hello,this is put into applicat ...

  3. SQLite入门与分析(三)---内核概述(2)

    写在前面:本节是前一节内容的后续部分,这两节都是从全局的角度SQLite内核各个模块的设计和功能.只有从全局上把握SQLite,才会更容易的理解SQLite的实现.SQLite采用了层次化,模块化的设 ...

  4. Linux下Nginx+Tomcat整合的安装与配置

    因为nginx处理静态页面的速度很快,并且是免费的,它还可以配置负载均衡的服务器集群来搭建多个tomcat,所以nginx+tomcat是企业搭 建javaee项目很好的选择.nginx主要是通过反向 ...

  5. Qt之启动外部程序(调用cmd.exe ping putty winscp 管道等等,比较牛叉)

    http://blog.csdn.net/u011012932/article/details/50478833

  6. 220. Contains Duplicate III

    题目: Given an array of integers, find out whether there are two distinct indices i and j in the array ...

  7. HTML5学习(七)----地理定位

    参考教程:http://www.w3school.com.cn/html5/html_5_geolocation.asp 说明:设备必须有GPS定位功能才能定位的 定位用户的位置 HTML5 Geol ...

  8. 1671. Anansi's Cobweb(并查集)

    1671 并查集 对于询问删除边之后的连通块 可以倒着加边 最后再倒序输出 #include <iostream> #include<cstdio> #include<c ...

  9. 高性能PHP支持静态类型

    PHP+QB是一个可选的PHP虚拟机,它声称在性能上提供了数量级的提升.而负面影响就是它需要所有的内容都必须是静态类型,同时也对数组做了一些限制. 静态 类型声明 是通过PHPDoc语法的一个扩展添加 ...

  10. Zen Coding support in WebStorm/PhpStorm

    With the last WebStorm/PhpStorm EAP you can edit HTML and CSS code really fast usingZen Coding featu ...