无法将变音符号 (Ü Ö Ä ü ö ä è é) 转换为 .utf8
Can not convert umlauts (Ü Ö Ä ü ö ä è é) to .utf8
我想解码来自 http 请求的响应。但是在编码为 .utf8
时出错
String(data: data, encoding: .utf8)
returns 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\">\n\n Ü Ö Ä ü ö ä è é\n\n</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
字符串。
我想解码来自 http 请求的响应。但是在编码为 .utf8
String(data: data, encoding: .utf8)
returns 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\">\n\n Ü Ö Ä ü ö ä è é\n\n</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
字符串。