相关疑难解决方法(0)

SWIFT:NSURLSession将数据转换为String

在我的iPhone应用程序(在SWIFT中开发)中,我必须使用https服务(带参数)进行通信,并需要分析响应.

一切正常,但在某些情况下注意到它没有得到预期的结果...进一步分析我发现它是将服务器响应数据转换为字符串(NSData - > NSString)的问题...

1).当我使用UTF8编码时,我得到nil作为转换后的String(responseString)

    let responseString = NSString(data: data, encoding: NSUTF8StringEncoding)
Run Code Online (Sandbox Code Playgroud)

2).但是使用ASCII编码它很好(获取正确的响应服务器提供)

    let responseString = NSString(data: data, encoding: NSASCIIStringEncoding)
Run Code Online (Sandbox Code Playgroud)

以下是我正在尝试的完整示例代码 ...

    let myUrl = NSURL(string: "https://myurl.com/myservice.asp")
    let request = NSMutableURLRequest(URL: myUrl!)

    request.HTTPMethod = "POST"
    request.timeoutInterval = 55.0
    let postString = "paramone=\(para1)&paramtwo=\(para2)&paramthree=\(para3)"

    // NOTE: Works ok with ASCII AND UTF8 both encoding types at this point...
    // request.HTTPBody = postString.dataUsingEncoding(NSASCIIStringEncoding)
    request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)

    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in

        if (error != …
Run Code Online (Sandbox Code Playgroud)

objective-c ios swift

5
推荐指数
2
解决办法
8145
查看次数

在 Swift 中解码引用的可打印消息

我有一个带引号的可打印字符串,例如“The cost would be =C2=A31,000”。如何将其转换为“成本为 \xc2\xa31,000”。

\n\n

我目前只是手动转换文本,这并不涵盖所有情况。我确信只有一行代码可以帮助解决这个问题。

\n\n

这是我的代码:

\n\n
func decodeUTF8(message: String) -> String\n{\n    var newMessage = message.stringByReplacingOccurrencesOfString("=2E", withString: ".", options: NSStringCompareOptions.LiteralSearch, range: nil)\n    newMessage = newMessage.stringByReplacingOccurrencesOfString("=E2=80=A2", withString: "\xe2\x80\xa2", options: NSStringCompareOptions.LiteralSearch, range: nil)\n    newMessage = newMessage.stringByReplacingOccurrencesOfString("=C2=A3", withString: "\xc2\xa3", options: NSStringCompareOptions.LiteralSearch, range: nil)\n    newMessage = newMessage.stringByReplacingOccurrencesOfString("=A3", withString: "\xc2\xa3", options: NSStringCompareOptions.LiteralSearch, range: nil)\n    newMessage = newMessage.stringByReplacingOccurrencesOfString("=E2=80=9C", withString: "\\"", options: NSStringCompareOptions.LiteralSearch, range: nil)\n    newMessage = newMessage.stringByReplacingOccurrencesOfString("=E2=80=A6", withString: "\xe2\x80\xa6", options: NSStringCompareOptions.LiteralSearch, range: nil)\n    newMessage = newMessage.stringByReplacingOccurrencesOfString("=E2=80=9D", withString: "\\"", options: NSStringCompareOptions.LiteralSearch, range: nil)\n …
Run Code Online (Sandbox Code Playgroud)

macos utf-8 quoted-printable swift

4
推荐指数
1
解决办法
2221
查看次数

从NSURLResponse检测NSStringEncoding的功能?

我只是想知道是否有任何现有的类别或任何类型的函数将从NSURLResponse对象返回NSStringEncoding常量.

我现在面临的问题是,当我将Web服务响应数据转换为String时,我将编码硬编码为NSUTF8StringEncoding然后它实际上会导致问题,因为我的Web服务有时会返回以UTF8编码的响应,有时以ASCII编码(好吧,我对所有的编码都不太确定,但是有时在响应中有其他语言字符,如日语,中文等)

所以我的想法是在NSURLResponse上有一个类别来检测编码并返回例如.

 NSURLResponse * response = // NSURLResponse object ( web service response headers )
 NSData * responseData = // NSData object ( web service response data )
 NSStringEncoding encoding = [response stringEncodingUsed];
 NSString * responseText = [[NSString alloc]initWithData:responseData encoding:encoding];
Run Code Online (Sandbox Code Playgroud)

iphone http objective-c nsstring nsstringencoding

2
推荐指数
1
解决办法
2441
查看次数

Swift从URL获取HTML

我正在尝试从URL获取并打印HTML。这是我的操作方法(使用Swift 2):

let testUrl = NSURL(string: "https://www.google.com")
var html = NSString()
do {
    html = try NSString(contentsOfURL: testUrl!, encoding: NSUTF8StringEncoding)
} catch{print(error)}
print(html)
Run Code Online (Sandbox Code Playgroud)

并在控制台中打印以下错误:

错误域= NSCocoaErrorDomain代码= 261“无法使用文本编码Unicode(UTF-8)打开文件。” UserInfo = {NSURL = https://www.google.com,NSStringEncoding = 4}

任何的想法?

html ios swift swift2

1
推荐指数
1
解决办法
3863
查看次数