Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将文本添加到字典并发送到服务器时,重音转换错误_Ios_String_Swift_Non Ascii Characters - Fatal编程技术网

Ios 将文本添加到字典并发送到服务器时,重音转换错误

Ios 将文本添加到字典并发送到服务器时,重音转换错误,ios,string,swift,non-ascii-characters,Ios,String,Swift,Non Ascii Characters,我有一组词汇表:[[String:String]]。每个单词都包含一个法语字符串参数文本 当我将此数组放入字典:[String:AnyObject]中时,字符串文本参数中的重音符号将转换为unicode格式 例如,ébeen\U00e9 我知道我的字符串是正常的,但它在服务器中是错误的。当我向服务器发送此文本时: toulousain的便携式设备,他收到toulousain的便携式设备。我知道服务器很好,问题不是从这里来的 我相信这个问题来自我的发音args的AnyObject类型,但我不知道如

我有一组词汇表:[[String:String]]。每个单词都包含一个法语字符串参数文本

当我将此数组放入字典:[String:AnyObject]中时,字符串文本参数中的重音符号将转换为unicode格式

例如,ébeen\U00e9

我知道我的字符串是正常的,但它在服务器中是错误的。当我向服务器发送此文本时: toulousain的便携式设备,他收到toulousain的便携式设备。我知道服务器很好,问题不是从这里来的

我相信这个问题来自我的发音args的AnyObject类型,但我不知道如何解决

这是我的密码:

var args: [String:AnyObject] = [
        "action":"share",
        "id": NSNumber(longLong: id)
    ]
    var shareOn = [[String:String]]()
    if let sharers = User.currentUser?.sharers {
        for (index, object) in enumerate(sharers) {
            if object.enabled == true {
                var sharerContent: [String:String] = ["sharerId": object.sharerId, "cnxId": String(object.cnxId)]
                if object.shareAsImageEnable == true {
                    sharerContent["shareAsImage"] = "true"
                }
                if object.mustSpecifyShareText == true {
                    var text : String! = (title != nil) ? title : ""
                    if object.sharerId.lowercaseString.rangeOfString("twitter") != nil {
                        let maxLength = 140 - 27 // Twitter limit - max URL long
                        if text.length > maxLength {
                            let index: String.Index = advance(text.startIndex, maxLength-3)
                            text = text.substringToIndex(index) + "... http://ppo.az/..."
                        } else {
                            text = text + " http://ppo.az/..."
                        }
                    }
                    sharerContent["text"] = text
                }
                shareOn.append(sharerContent)
            }
        }
    }

    println(shareOn)

    args["shareOn"] = shareOn

    println(args)
以及println的结果:

printlnshareOn=>重音正常=>

[[sharerId:facebook,cnxId:4230821,shareAsImage:true,text:Le kit de réparation de portable est toulousain]]

printlnargs=>重音不正常=>

[操作:share,id:4049850929,shareOn: { cnxId=4150811; shareAsImage=true; sharerId=facebook; text=Le kit de r\u00e9 toulousain便携式设备的分离; } ]

以及我的路由器和我的函数makeRequest:

import UIKit
import Alamofire
import OAuthSwift

enum Router: URLRequestConvertible {

static let baseURLString: String! = Global.kClientAPIURL
static var oauthClient: OAuthSwiftClient!

case Login([String: AnyObject])
case LoginSocial([String: AnyObject])
case Profil([String: AnyObject])
case GetCompilation([String: AnyObject])
case GetSavedSearch([String: AnyObject])
case sharePost([String: AnyObject])


var URLRequest: NSURLRequest {
    let (method: Alamofire.Method, path: String, parameters : [String: AnyObject]?) = {
        switch self {
        case .Login(let params):
            return (.POST, "api/1/login", params)
        case .LoginSocial(let params):
            return (.POST, "api/1/login-with-social-account", params)
        case .Profil(let params):
            return (.GET, "api/1/profile", params)
        case .GetCompilation(let params):
            return (.GET, "api/1/compilation", params)
        case .GetSavedSearch(let params):
            return (.GET, "api/1/search", params)
        case .sharePost(let params):
            return (.POST, "api/1/post", params)
        }
    }()

    let URL = NSURL(string: Router.baseURLString)!
    let URLWithPath = URL.URLByAppendingPathComponent(path)

    let auth = OAuthSwiftClient.authorizationHeaderForMethod(method.rawValue,
        url: URLWithPath,
        parameters: parameters!,
        credential: Router.oauthClient.credential)
    let URLRequest = makeRequest(URLWithPath, method.rawValue, ["Authorization" : auth], parameters!, NSUTF8StringEncoding)

    return URLRequest
  }
}

func makeRequest(URL: NSURL, method: String, headers: [String : String], parameters: Dictionary<String, AnyObject>, dataEncoding : NSStringEncoding) -> NSMutableURLRequest {
var request = NSMutableURLRequest(URL: URL)
request.HTTPMethod = method

for (key, value) in headers {
    request.setValue(value, forHTTPHeaderField: key)
}

let charset = CFStringConvertEncodingToIANACharSetName(CFStringConvertNSStringEncodingToEncoding(dataEncoding))

var nonOAuthParameters = parameters.filter { key, _ in !key.hasPrefix("oauth_") }

if nonOAuthParameters.count > 0 {
    if request.HTTPMethod == "GET" || request.HTTPMethod == "POST" {
        let queryString = nonOAuthParameters.urlEncodedQueryStringWithEncoding(dataEncoding)
        request.URL = URL.URLByAppendingQueryString(queryString)
        request.setValue("application/x-www-form-urlencoded; charset=\(charset)", forHTTPHeaderField: "Content-Type")
    }
    else {
        var error: NSError?
        if let jsonData: NSData = NSJSONSerialization.dataWithJSONObject(nonOAuthParameters, options: nil, error: &error)  {
            request.setValue("application/json; charset=\(charset)", forHTTPHeaderField: "Content-Type")
            request.HTTPBody = jsonData
        }
        else {
            println(error!.localizedDescription)
        }
    }
}
return request
}
将é转换为\U00e9不是问题,它是的一部分,表示:

任何字符都可以转义。如果字符位于基本 多语言平面U+0000到U+FFFF,则可能是 表示为六个字符的序列:一个反向索利多金币,后跟 由小写字母u,后跟四个十六进制数字 对角色的代码点进行编码。十六进制字母A F可以是大写或小写。例如,一个字符串包含 只有一个反向索利多士字符可以表示为 \u005C


如果您的服务器无法理解它,您的服务器不符合规范是一个问题。

您的服务器数据库是什么,统一支持的级别是什么。我在Obj-C中有相同的应用程序,服务器可以正常工作,所以我猜问题不是来自它。我在Obj-C中有相同的应用程序,服务器可以正常工作,所以我猜问题出在哪里不是从它来的。