【发布时间】:2016-08-30 14:10:04
【问题描述】:
我目前正在开发一个接受英语、俄语和乌克兰语输入的网站。
用户经常提交带有商标符号 (™)、日文字母 (の) 和德文字母 (Ö) 等字符的表单。
这很好,但有时当他们从某个地方复制粘贴这些字符时,他们会提交输入,例如 ???? (0xD8000xDC00), (0xFFFD), (0x17), ¿ (0xBF), ½ (0xBD) 和 ï (0xEF)(顺便说一句,有一个乌克兰字母 'ї',其值为 0x457)。
稍后,当将该输入转换为 UTF-8 XML 时,它会引发此错误 “输入不是正确的 UTF-8,表示编码!字节:0x17 0xEF 0xBF 0xBD,第 13330 行,第 27 列”。
有没有办法验证用户输入中的这些“损坏”字符?
我正在考虑将输入字符串中的每个字符转换为 HEX 值,然后与包含所有非法 HEX 值的数组进行比较。但是在这种方法中,问题是我不知道“损坏”字符的所有可能代码。我知道 0xEF 0xBF 0xBD 经常出现,但我不知道还有多少。
有什么建议吗?
【问题讨论】: