我是使用Google翻译API的新手,在测试过程中我们注意到,对于某些翻译(我还没有找到模式),我们在响应中获得了\ u200b字符。这导致了很多问题,最重要的是它似乎没有服务器任何目的或任何意义。举个简单的例子:
返回:
{
"data": {
"translations": [
{
"translatedText": "Sell \u200b\u200bHerge Down"
}
]
}
}
我们的软件偶然发现了这些字符串/字符,我没有找到防止它们或摆脱它们的方法。
答案 0 :(得分:0)
请阅读JSON格式的文档:https://json.org/
字符串是零个或多个Unicode字符的序列。
字符是"
或\
之外的任何Unicode字符或控制字符,
[...]
或者是\u
后跟四个十六进制数字。
在最后一种情况下,我们是\u
,后跟四个十六进制数字,它表示一个Unicode字符:Unicode Character 'ZERO WIDTH SPACE' (U+200B)。它甚至有自己的维基百科页面:Zero-width space。及其堆栈溢出问题:What's HTML character code 8203?。
现在,有很多具有特殊行为的Unicode字符,这是其中之一,在其他字符中是不可见的。因此,您需要了解Unicode的工作原理,并应该清理来自第三方API(以及用户输入)的输入/输出。
只需定义您实际想要支持的字符列表,并确保去除或过滤掉所有其他字符。例如,如果您希望支持NL和EN,则可以剥离Latin script in Unicode之外的内容。
剥离您遇到的U + 200B和其他不良字符可能会使您免于遭受以下意外事故的困扰: