[英]PHP htmlspecialchars() function error when trying to use UTF-8 string
我做了以下事情:
htmlspecialchars($string, ENT_COMPAT, 'UTF-8')
,其中$string
是包含特殊ü字符的字符串。 它给我一个错误: 参数中的无效多字节序列 。 当我用'ISO8859-1'
更改'UTF-8'
时,不会抛出任何错误,但会显示错误的字符。 (“未知字符”字符,看起来像<?>
)
如果我使用HTML表单更新数据库中的字符串,该错误消失并且该字符正确显示,但是,当我查看Navicat中的记录时,它看起来是两个字符:
[1/4][A with some thing on top of it]
一些多字节,不被视为一个字符。
怎么回事,哪里出了问题,我该怎么办?
尽管我不知道“无效多字节”错误的来源,但我很确定htmlspecialchars()
不是您的罪魁祸首 :
出于此功能的目的,字符集ISO-8859-1,ISO-8859-15,UTF-8,cp866,cp1251,cp1252和KOI8-R实际上是等效的,因为受htmlspecialchars()影响的字符占用相同的字符所有这些字符集中的位置。
以我的理解, htmlspecialchars()
对于UTF-8字符串应该工作正常,而无需指定字符集。 我敢打赌,包含表单的HTML页面或您使用的数据库连接不是UTF-8编码的。 对于后者,尝试发送一个
SET NAMES utf8;
在执行插入操作之前转到mySQL。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.