ios - IOS上的字符串编码问题

标签 ios objective-c nsstringencoding

我在ios开发中遇到了字符串编码问题。故事如下:

我用中文创建了一些值,然后为这些值创建了一个NSDictionary,该字典用作网络请求的参数:

- (void)createActivity
{
    NSString *actionTheme = titleF.text;
    NSString *actionTitle = biaotiF.text;
    NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:actionTheme, @"actionTheme", actionTitle, @"actionTitle",nil];
    [self networkrequest:];
}

然后,对字典做了一些工作:

将字典转换为JSON形式,作为NSString的类型。
NSData* jsonData = [NSJSONSerialization dataWithJSONObject:param options:NSJSONWritingPrettyPrinted error:nil];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 

对字符串进行编码,因为字符串中有中文单词。
NSString *urlEncodedString = [jsonString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

最后,使用上面的字符串创建了完整的URL:
http://app.ic100.com/action/add?paramJson=%7B%22actionTheme%22%3A%22%E6%88%96%E8%80%85%E5%92%8C%E7%94%9F%E6%B4%BB%22%2C%22actionSite%22%3A%22%E5%8E%A (something like this)

我使用第三方“ASIFormDataRequest”进行网络请求,并设置StringEncoding:
ASIFormDataRequest *requstHttp  = [[ASIFormDataRequest alloc] init];
[requstHttp setStringEncoding:NSUTF8StringEncoding];
....

所有数据已成功发送到服务器,但是当我从服务器请求这些数据并在iphone上显示时。它变成不可读的文本:

我已经仔细检查了应该编码或解码字符串的所有位置,仅使用utf8。而且,对于服务器端,也没有使用其他编码。我的同事已经测试了从Android平台发送的数据,没问题。所以我想也许我错过了一些要点。

有什么建议吗?

最佳答案

通过使用 Base64 类,您可以对字符串进行编码或解码。

HERE在您的项目中添加Base64类

参见类中的编码方法。

编码:

+ (NSString *)stringWithBase64EncodedString:(NSString *)string;

- (NSString *)base64EncodedString;

解码:
- (NSString *)base64DecodedString;

关于ios - IOS上的字符串编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26397882/

相关文章:

ios - 为什么 iOS CLLocation 显示不正确的值?

ios - 将单元格数据(即 cell.textlabel.text 和 cell.imageView.image)传递给另一个 View Controller

ios - Objective-C NSURLConnection didReceiveData在NSData中创建错误的JSON

objective-c - 如何在base64编码格式的字符串编码后省略\r\n?

swift - NSData编码

objective-c - + (instancetype) URLWithString 当我尝试输入非拉丁字符时返回 nil

ios - 将 SecKey 从 iOS 导出到 watchOS

ios - 模拟器中的 Logo 大小已更改

ios - 核心数据希望我的谓词参数为NSNumber和NSDate

iphone - 将图像从 URL 加载到 UIImageview 需要时间