如何让Swift / Xcode控制台显示中文字符而不是unicode?
我正在使用此代码:
import SwiftHTTP var request = HTTPTask() var params = ["text": "这是中文测试"] request.requestSerializer.headers["X-Mashape-Key"] = "jhzbBPIPLImsh26lfMU4Inpx7kUPp1lzNbijsncZYowlZdAfAD" request.responseSerializer = JSONResponseSerializer() request.POST("https://textanalysis.p.mashape.com/segmenter", parameters: params, success: {(response: HTTPResponse) in if let json: AnyObject = response.responseObject { println("\(json)") } },failure: {(error: NSError, response: HTTPResponse?) in println("\(error)") })
Xcode控制台将此显示为响应:
{ result = "\U8fd9 \U662f \U4e2d\U6587 \U6d4b\U8bd5"; }
是否可以让控制台显示以下内容?:
{ result = "这 是 中文 分词 测试" }
如果是这样,我需要做些什么来实现它?
谢谢。
代替
println(json)
使用
println((json as NSDictionary)["result"]!)
这将打印正确的中文结果。
原因:第一个打印将调用NSDictionary的调试描述,它不仅逃避中文字符。
您的函数实际上打印了响应对象,或者更准确地说是其描述。 响应对象是字典,unicode字符在其描述中使用\ Uxxxx编码。
看问题: NSJSONSerialization和Unicode,不能很好地一起玩
要访问结果字符串,您可以执行以下操作:
if let json: AnyObject = response.responseObject { println("\(json)") // your initial println statement if let jsond = json as? Dictionary { if let result = jsond["result"] as? String { println("result = \(result)") } } }
第二个println语句将打印实际的字符串,此代码实际上产生:
{ result = "\U8fd9 \U662f \U4e2d\U6587 \U6d4b\U8bd5"; } result = 这 是 中文 测试