美文网首页
ios字符串编码转换(GBK与UTF-8)

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

作者: Billy_W | 来源:发表于2016-10-26 09:32 被阅读0次

    我要实现的是将我的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编码的了,数据库中写入的也是中文了,也能正确匹配中文了。

    相关文章

      网友评论

          本文标题:ios字符串编码转换(GBK与UTF-8)

          本文链接:https://www.haomeiwen.com/subject/bisduttx.html