MySQL 对字符串进行编码并添加问号


MySQL encodes string and adds a question mark

我在这里有一个非常奇怪的行为。

我从 PDF 复制一个表格,表格粘贴到 Excel 电子表格中。然后将.xls文件另存为.csv。最后,.csv通过 PHP 上传到 MySQL。有些文本的开头有一个隐藏的问号。像这个:NEE13.我看不出任何异常,但只是为了测试我用 phpMyAdmin 做了一个插入。MySQL抱怨说:

Warning: #1366 Incorrect string value: ''xEF'xBB'xBFNEE...' for column 'rid' at row 1.

然后,数据库中的结果值为:?NEE13

任何帮助纠正此问题,不胜感激。谢谢。

您的文件以"EF BB BF"开头。它们被称为utf8魔术字节或BOM(字节顺序标记)。

MySQL无法将这些字节解析为正确的utf8符号,并用"?"标记替换它们。

只需在插入之前删除这些字节,或使用 blob/varbinary 字段来存储文件。