【发布时间】:2012-06-28 08:50:26
【问题描述】:
This question 告诉我
htmlentities 在所有方面都与 htmlspecialchars() 相同,除了 htmlentities(),所有具有 HTML 字符实体等价物的字符都被翻译成这些实体。
听起来 htmlentities 是我想要的。
然后this question 告诉我我需要“UTF-8”参数来消除这个错误:
Invalid multibyte sequence in argument
所以,这是我的编码包装函数(用于规范不同 PHP 版本的行为)
function html_entities ($s)
{
return htmlentities ($s, ENT_COMPAT /* ENT_HTML401 */, "UTF-8");
}
我仍然收到“参数中的多字节序列”错误。
这是一个触发错误的示例字符串,它是十六进制编码:
Jigue à Baptiste
4a 69 67 75 65 20 e0 20 - 42 61 70 74 69 73 74 65
我注意到 à 编码为 0xe0,但编码为 单字节,高于 0x80。
我做错了什么?
【问题讨论】:
-
我喜欢那些 “我做错了什么?” 问题,因为答案很简单:Something!
-
你也没有做错什么。您将一个字符串传递给一个拒绝它处理它的函数,然后您会收到一条错误消息。这没有错,但正确,因为您在那里传递的字符串不正确。如果您实际上会得到未定义但预期的结果,那将是非常错误的。那么你做错了什么? “你有错误的期望,仅此而已。” 那么你期望该函数做什么以及为什么?
标签: php html character-encoding