iconv 函数有时会给我一个错误:
Notice:
iconv() [function.iconv]:
Detected an incomplete multibyte character in input string in [...]
有没有办法在将数据发送到 inconv() 之前检测 UTF-8 字符串中是否存在非法字符?
原文由 rsk82 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答3.1k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.4k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
1 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读
2 回答1.2k 阅读
首先,请注意,不可能检测文本是否属于特定的不需要的编码。您只能检查字符串在给定编码中是否有效。
自 PHP 4.3.5 起,您可以使用
preg_match
[PHP 手册] 中可用的 UTF-8 有效性检查。如果给出的字符串无效,它将返回0
(没有附加信息):另一种可能性是
mb_check_encoding
[PHP 手册] :您可以使用的另一个功能是
mb_detect_encoding
[PHP 手册] :将
strict
参数设置为true
很重要。此外,
iconv
[PHP 手册] 允许您即时更改/删除无效序列。 (但是,如果iconv
遇到这样的序列,它会生成通知;此行为无法更改。)您可以使用
@
并检查返回字符串的长度:还要检查
iconv
手册页上的示例。