Objective-c NSString 转utf-8和gb2312

2024-03-13 08:58
文章标签 nsstring utf objective gb2312

本文主要是介绍Objective-c NSString 转utf-8和gb2312,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  转载自:http://www.cocoachina.com/bbs/read.php?tid=62897


  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#pragma mark - 
#pragma mark Encode Chinese to ISO8859-1 in URL 
-( NSString *)EncodeUTF8Str:( NSString *)encodeStr{ 
     CFStringRef nonAlphaNumValidChars = CFSTR( "![        DISCUZ_CODE_1        ]’()*+,-./:;=?@_~" );         
     NSString *preprocessedString = ( NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(kCFAllocatorDefault, (CFStringRef)encodeStr, CFSTR( "" ), kCFStringEncodingUTF8);         
     NSString *newStr = [( NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)preprocessedString, NULL ,nonAlphaNumValidChars,kCFStringEncodingUTF8) autorelease]; 
     [preprocessedString release]; 
     return newStr;         
#pragma mark - 
#pragma mark Encode Chinese to GB2312 in URL 
-( NSString *)EncodeGB2312Str:( NSString *)encodeStr{ 
     CFStringRef nonAlphaNumValidChars = CFSTR( "![        DISCUZ_CODE_1        ]’()*+,-./:;=?@_~" );         
     NSString *preprocessedString = ( NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(kCFAllocatorDefault, (CFStringRef)encodeStr, CFSTR( "" ), kCFStringEncodingGB_18030_2000);         
     NSString *newStr = [( NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)preprocessedString, NULL ,nonAlphaNumValidChars,kCFStringEncodingGB_18030_2000) autorelease]; 
     [preprocessedString release]; 
     return newStr;         
}


使用sudzc连接webService时出现了中文乱码问题,使用NSUTF8encoding 依然是乱码。
使用上面的EncodeUTF8Str方法转码,比如:苹果,转码后是 %E8%8B%B9%E6%9E%9C,这样服务器端解码就可以了。 

这篇关于Objective-c NSString 转utf-8和gb2312的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/804311

相关文章

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

在Unity环境中使用UTF-8编码

为什么要讨论这个问题         为了避免乱码和更好的跨平台         我刚开始开发时是使用VS开发,Unity自身默认使用UTF-8 without BOM格式,但是在Unity中创建一个脚本,使用VS打开,VS自身默认使用GB2312(它应该是对应了你电脑的window版本默认选取了国标编码,或者是因为一些其他的原因)读取脚本,默认是看不到在VS中的编码格式,下面我介绍一种简单快

批量文件编码转换用python实现的utf8转gb2312,vscode设置特殊文件的默认打开编码

批量文件编码转换用python实现的utf8转gb2312, 任意编码之间的相互转换都是可以的.改一下下面的参数即可 convert.py文件内容如下 import osimport globimport chardet#检测文件编码类型def detect_file_encoding(file_path):with open(file_path, 'rb') as f:data = f

1字节的UTF-8序列的字节1无效

使用DOMReader解析XML文档时候报错”1字节的UTF-8序列的字节1无效”,我这里的解决方法。 1.手动将< ? xml version=”1.0” encoding=”UTF-8”?>中的UTF-8更改成UTF8,这样就可以了。 2.使用文本编译器把xml文档改成以UTF8无BOM编码格式就可以了。

页面jsp编码utf-8,传递中文参数到java后台出现乱码

1、前台页面jsp的编码是contentType=”text/html; charset=utf-8” 后台编码是gdk,传递中文参数时出现乱码,后台接收到传递的参数时需要进行转换才能解决乱码问题。 new String(this.getParameter("teacherName").getBytes("iso-8859-1"),"utf-8") 2、google浏览器显示正常,但是IE浏

Android 打开 GBK项目如何设置成UTF-8

1.标题 今天打开一个eclipse老项目,编码格式为GBK,Android studio导入项目报错,本人想到一个方案就是批量修改文件格式从 GBK到 UTF-8,这样可以一键解决问题 2.开发脚本 使用前请备份代码   使用前请备份代码   使用前请备份代码 脚本代码如下,保存到文件下为 shell.ps1 # 获取当前脚本的所在目录$folderPath = Get-Loca

Core Text Objective-C Wrapper

Core Text Objective-C Wrapper https://github.com/akosma/CoreTextWrapper Introduction(介绍) One of the most promising and mysterious new frameworks introduced in iOS 3.2 is Core Text. Apple define

Golang | Leetcode Golang题解之第393题UTF-8编码验证

题目: 题解: const mask1, mask2 = 1 << 7, 1<<7 | 1<<6func getBytes(num int) int {if num&mask1 == 0 {return 1}n := 0for mask := mask1; num&mask != 0; mask >>= 1 {n++if n > 4 {return -1}}if n >= 2 {retur