gpt4 book ai didi

swift - Foundation 的字符串编码不是网站所期望的

转载 作者:行者123 更新时间:2023-11-28 06:37:33 24 4
gpt4 key购买 nike

具体来说,它将带有变音符号的字符编码为两个字符。

let unencoded = "könnten"
let encoded = unencoded.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())!

encoded 等于 ko%CC%88nnten。因此,它将 ö 转换为 o%CC%88。所以它真的很像 ,其中变音符号 (¨) 和 o 是分开的。

然而,大多数网站似乎期望编码为 %C3%B6,即 ö,其中变音符 (¨ ) 和 o 是一个字符。

您可以在此处看到编码不起作用的示例(Foundation 希望如何对其进行编码):

https://www.linguee.com/german-english/search?query=ko%CC%88nnten

以及它的理想状态:

https://www.linguee.com/german-english/search?query=k%C3%B6nnten

是否有更好的编码方式?也许不同的选择或不同的框架?

最佳答案

理想情况下,服务器应该同时处理预组合和分解字符串。但如有必要,您可以在客户端:

let unencoded = "könnten"
let encoded = unencoded.precomposedStringWithCanonicalMapping
.stringByAddingPercentEncodingWithAllowedCharacters(.URLQueryAllowedCharacterSet())!

print(encoded) // k%C3%B6nnten

参见 Technical Q&A QA1235 – Converting to Precomposed Unicode获取更多信息。

关于swift - Foundation 的字符串编码不是网站所期望的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38767972/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com