簡體   English   中英

IOS上的字符串編碼issuse

[英]A string encoding issuse on IOS

我在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類,您可以對字符串進行編碼或解碼。

這里在您的項目中添加Base64類

參見類中的編碼方法。

編碼:

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

- (NSString *)base64EncodedString;

解碼:

- (NSString *)base64DecodedString;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM