ios字符串编码转换(GBK与UTF-8)

我要实现的是将我的ios端的数据通过php写的服务端写入到数据库中,由于要写入中文信息,我php端都是用的gbk编码,但是测试的时候数据库中写入的一直是乱码,也无法匹配中文。我们知道在ios中设置data的编码时,NSStringEncoding默认是没有gbk这些编码的。

NSString*aString =@"这是一个测试string转GBK发送的字符串";

NSData*aData = [aString dataUsingEncoding:NSUTF8StringEncoding];

NSString*base64String = [aData base64EncodedStringWithOptions:0];

parameters[@"printcontent"] = [NSString stringWithFormat:@"T:%@",base64String];

[self.mgrPOST:followURL parameters:parameters progress:nil success:^(NSURLSessionDataTask* _Nonnulltask ,id_Nullable responseObject) {

NSLog(@"%@",responseObject);

}failure:^(NSURLSessionDataTask* _Nullabletask ,NSError* _Nonnullerror ) {

NSLog(@"err : %@",error);

}];

所以只能自己定义一个NSStringEncoding对象来转码。

按照上面的方法将代码修改如下:

NSString*aString =@"这是一个测试string转GBK发送的字符串";

NSStringEncoding   gbkEncoding=CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);

NSData*aData = [aString dataUsingEncoding: gbkEncoding];

NSString*base64String = [aData base64EncodedStringWithOptions:0];

parameters[@"printcontent"] = [NSString stringWithFormat:@"T:%@",base64String];

[self.mgrPOST:followURL parameters:parameters progress:nil success:^(NSURLSessionDataTask*_Nonnulltask,id_NullableresponseObject) {

NSLog(@"%@",responseObject);

}failure:^(NSURLSessionDataTask*_Nullabletask,NSError*_Nonnullerror) {

NSLog(@"err : %@",error);

}];


这样往服务器端发送的数据就是gbk编码的了,数据库中写入的也是中文了,也能正确匹配中文了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容