我正在寻找关于如何处理来自用户的无效UTF-8输入的一般策略/建议.
即使我的webapp使用UTF-8,某些用户也会输入无效字符.这会导致PHP的json_encode()中的错误,并且总体来说似乎是一个坏主意.
W3C I18N常见问题解答:多语言表格说"如果收到非UTF-8数据,则应该发回错误信息.".
编辑:我非常熟悉mbstring扩展,并没有问"UTF-8如何在PHP中工作".我希望那些在实际情况下有经验的人提供建议.
EDIT2:作为解决方案的一部分,我真的很想看到一种将无效字符转换为U + FFFD 的快速方法
为什么没有 5 字节或 6 字节代码点?我知道它们直到 2003 年才被移除。但我找不到它们被删除的原因。
维基百科关于UTF-8的页面说
2003年11月,UTF-8受到RFC 3629的限制,以匹配UTF-16字符编码的约束:明确禁止高低代理字符对应的代码点删除超过3%的三字节序列,并结束U+10FFFF 删除了超过 48% 的四字节序列以及所有五字节和六字节序列。
但我不明白为什么它很重要。