我做了以下事情:
- 我有一个包含数据的电子表格。其中一行中有一个 ü 字符。
- 我将它保存为 OpenOffice.org 中的 CSV 文件。当它要求我输入字符编码时,我选择 UTF-8。
- 我使用 Navicat 创建 MySQL 数据库表,InnoDB 使用 UTF-8 utf8_general 编码并导入 CSV。
- 我尝试使用 PHP 函数
htmlspecialchars($string, ENT_COMPAT, 'UTF-8')
,其中$string
包含特殊 ü 字符的字符串。
它给了我一个错误:Invalid multibyte sequence in argument。当我用 更改'UTF-8'
时'ISO8859-1'
,不会引发错误,但会显示不正确的字符。(“未知字符”字符,看起来像<?>
)
如果我使用 HTML 表单更新数据库中的字符串,错误消失并且字符正确显示,但是,当我在 Navicat 中查看记录时,它看起来是两个字符:
[1/4][A with some thing on top of it]
一些不被视为一个字符的多字节。`
发生了什么事,哪里出了问题,我能做些什么?