热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

iPhone中编码转换方法

我们可以使用以下方法进行编码转换NSString*str2[NSStringstringWithCString:str1encoding:enc1];再调用NSString的cSt

我们可以使用以下方法进行编码转换

  NSString* str2 = [NSString stringWithCString:str1 encoding:enc1];

  再调用NSString的cStringUsingEncoding:enc2实现从enc1到enc2的转换

  但是获取enc枚举值是个难题

  1. NSString.h中只定义了以下编码值

  enum {

  NSASCIIStringEncoding = 1, /* 0..127 only */

  NSNEXTSTEPStringEncoding = 2,

  NSJapaneseEUCStringEncoding = 3,

  NSUTF8StringEncoding = 4,

  NSISOLatin1StringEncoding = 5,

  NSSymbolStringEncoding = 6,

  NSNonLossyASCIIStringEncoding = 7,

  NSShiftJISStringEncoding = 8, /* kCFStringEncodingDOSJapanese */

  NSISOLatin2StringEncoding = 9,

  NSUnicodeStringEncoding = 10,

  NSWindowsCP1251StringEncoding = 11, /* Cyrillic; same as AdobeStandardCyrillic */

  NSWindowsCP1252StringEncoding = 12, /* WinLatin1 */

  NSWindowsCP1253StringEncoding = 13, /* Greek */

  NSWindowsCP1254StringEncoding = 14, /* Turkish */

  NSWindowsCP1250StringEncoding = 15, /* WinLatin2 */

  NSISO2022JPStringEncoding = 21, /* ISO 2022 Japanese encoding for e-mail */

  NSMacOSRomanStringEncoding = 30,

  NSUTF16StringEncoding = NSUnicodeStringEncoding, /* An alias for NSUnicodeStringEncoding */

  #if MAC_OS_X_VERSION_10_4 <&#61; MAC_OS_X_VERSION_MAX_ALLOWED || __IPHONE_2_0 <&#61; __IPHONE_OS_VERSION_MAX_ALLOWED

  NSUTF16BigEndianStringEncoding &#61; 0x90000100, /* NSUTF16StringEncoding encoding with explicit endianness specified */

  NSUTF16LittleEndianStringEncoding &#61; 0x94000100, /* NSUTF16StringEncoding encoding with explicit endianness specified */

  NSUTF32StringEncoding &#61; 0x8c000100,

  NSUTF32BigEndianStringEncoding &#61; 0x98000100, /* NSUTF32StringEncoding encoding with explicit endianness specified */

  NSUTF32LittleEndianStringEncoding &#61; 0x9c000100 /* NSUTF32StringEncoding encoding with explicit endianness specified */

  #endif

  };

  2. iphone中肯定是支持中文的&#xff0c;只是NSString中没有定义这个枚举值&#xff0c;我们可以通过两种方法获得这个枚举值

  第一个方法是通过CFStringConvertEncodingToNSStringEncoding

  比如&#xff1a;NSStringEncoding enc &#61; CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);

  NSString* str2 &#61; [NSString stringWithCString:str1 encoding:enc];

  全部的kCFStringEncoding定义参考CFStringEncodingExt.h

  另外CFStringConvertIANACharSetNameToEncoding也很有用

  3. 另外一种方法是通过

  const NSStringEncoding *encodings &#61; [NSString availableStringEncodings];

  NSMutableString *str &#61; [[NSMutableString alloc] init];

  NSStringEncoding encoding;

  while ((encoding &#61; *encodings&#43;&#43;) !&#61; 0)

  {

  [str appendFormat: &#64;"%&#64; &#61;&#61;&#61; %in", [NSString localizedNameOfStringEncoding:encoding], encoding];

  }

  然后打印str数组&#xff0c;你就可以知道每一个encoding的枚举值为多少了&#xff0c;比如中文的为-2147482063



推荐阅读
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
  • C语言常量与变量的深入理解及其影响
    本文深入讲解了C语言中常量与变量的概念及其深入实质,强调了对常量和变量的理解对于学习指针等后续内容的重要性。详细介绍了常量的分类和特点,以及变量的定义和分类。同时指出了常量和变量在程序中的作用及其对内存空间的影响,类似于const关键字的只读属性。此外,还提及了常量和变量在实际应用中可能出现的问题,如段错误和野指针。 ... [详细]
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
author-avatar
超级无敌智慧星在路上
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有