【发布时间】:2019-07-22 10:21:39
【问题描述】:
我网站上的用户在文本字段中输入了特殊字符:ä ö
这些显然与我可以从键盘输入的 ä ö 字符不同,因为当我将它们粘贴到程序员的记事本中时,它们分成了两个:a¨ o¨
在我网站的服务器端,我有一个 PHP 脚本,它可以识别用户输入中的非法特殊字符,并在带有 preg_replace 的 html 错误消息中突出显示它们。
字符拆分也发生在那里,所以我得到一个正常的字母 a 和 o,带有一个奇怪的单独 xCC 字符,它破坏了 UTF-8 字符串编码,json_encode 函数因此失败。
处理这些字符的最佳方法是什么?我应该尝试替换特殊的 ä ö 字符并用常规字符替换它们,还是我可以以某种方式捕获损坏的 UTF-8 字符并删除或替换它们?
【问题讨论】:
-
听起来您的脚本可能一直没有设置为 UTF8,请查看 a previous answer of mine 和 UTF-8 all the way through。
-
@Qirel 我认为这里的编码没有任何问题;复制和粘贴它们的行为表明它们是有效的组合变音符号,脚本只是没想到这些。
-
@deceze 我不相信that question 是一个合适的副本。两者都是关于规范化的,但是一个需要 ASCII,这个很乐意使用 UTF-8。