我收到来自google-translate api的某些翻译中的\ u200b

时间:2016-05-11 16:16:31

标签: google-translate

我是使用Google翻译API的新手,在测试过程中我们注意到,对于某些翻译(我还没有找到模式),我们在响应中获得了\ u200b字符。这导致了很多问题,最重要的是它似乎没有服务器任何目的或任何意义。举个简单的例子:

https://www.googleapis.com/language/translate/v2?key=YOURKEY&source=NL&target=EN&q=Hergeneer%20verkopen

返回:

{
 "data": {
  "translations": [
   {
    "translatedText": "Sell \u200b\u200bHerge Down"
   }
  ]
 }
}

我们的软件偶然发现了这些字符串/字符,我没有找到防止它们或摆脱它们的方法。

1 个答案:

答案 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和其他不良字符可能会使您免于遭受以下意外事故的困扰: