繁体   English   中英

尝试使用UTF-8字符串时,PHP htmlspecialchars()函数错误

[英]PHP htmlspecialchars() function error when trying to use UTF-8 string

我做了以下事情:

  1. 我有一个包含数据的电子表格。 其中一行中有一个ü字符。
  2. 我将其另存为OpenOffice.org中的CSV文件。 当它要求我输入字符编码时,我选择UTF-8。
  3. 我使用Navicat创建一个MySQL数据库表,InnoDB使用UTF-8 utf8_general编码并导入CSV。
  4. 我尝试使用PHP函数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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM