无法将变音符号 (Ü Ö Ä ü ö ä è é) 转换为 .utf8



我想解码http请求的响应。但编码到.utf8时出错

当数据包含德语(ÜÖõüöäèé(的元音变音符时,String(data: data, encoding: .utf8)返回nil

如何正确解码Data?对象?

编辑:提供更多详细信息

这就是我的反应。我无法改变它来自类似的后端。

let string = """
{
"test":"Value",
"OperatingInfosQuotes":"n<div id="div_operatinginfo_inner">n<div id="div_operatinginfo_title"><b>Test</b></div>n<div id="div_operatinginfo_content">nn Ü Ö Ä ü ö ä è énn</div>n</div>n"
}
"""

do {
let encode = try JSONDecoder().decode(TestObject.self, from: Data(string.utf8))
print(encode)
} catch {
print("Count not decode")
}

还有我的可编码对象:

struct TestObject: Codable {
var test: String
}

我该怎么处理?

您的方法完全错误。

Swift字符串没有编码,它只是一个字符序列。您的数据包含字节,这些字节是以某种编码方式存储的字符。您声称编码是UTF8,这显然是错误的。

有两种可能性:一种是您知道数据的编码并传递正确的编码。另一种是,如果你不知道编码,你可以使用一个不同的函数,在那里你不需要指定编码;相反,OS将查看解码并决定什么最有可能是正确的编码。如果是而不是iOS所理解的任何编码,则结果仅为零。

encoding: .windowsCP1252有帮助。

问题是Json包含引号("(,它打破了Swift中Json的格式,也无法转换为.utf8

如果将从响应中删除引号,一切都会好起来,如果没有,解决方法是转换为.windowsCP1252字符串。

最新更新