php - MySQLi 的编码问题

标签 php mysql mysqli character-encoding

我有一个 MySQL 表,我将其设置为使用编码 utf8_swedish_ci。两个示例值是 2 Kung1 Krön - 请注意瑞典字符。我需要从 PHP 脚本中搜索这些国际化字符串。我的 PHP 文件采用 UTF-8 编码。为了清晰起见,我的代码删除了错误处理,如下所示:

$db = new mysqli($host, $user, $password, $user);
$db->set_charset('UTF-8');
$stm = $db->prepare('SELECT `id` FROM `myTable` WHERE `bok` LIKE ?');
echo "Searching on $value'...";
$stm->bind_param('s', $value);
$stm->execute();
$stm->bind_result($result);
$stm->close();
echo "Fetched '$result'.";

现在,如果我将 $value 设置为第一个示例值,我会得到单个匹配行。对于其他示例值,我没有得到任何行。我已经测试了这些查询在 PHPMyAdmin 中的工作情况。我认为错误在于国际字符,因此我在某处搞乱了编码。那么我做错了什么以及如何解决这个问题?

编辑:$db->set_charset('UTF-8');行失败,因为我使用了不正确的字符集。它应该是utf8。事实证明我的错误处理太少了,我应该在 set_charset 之后检查 $db->e​​rror

最佳答案

$db->set_charset('UTF-8');

请注意,MySQL 很特殊,它内部使用的 UTF-8 字符集名称是 utf8(不带破折号),而不是常规的 UTF-8

如有疑问,请参阅显示字符集; ;)

关于php - MySQLi 的编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26305878/

相关文章:

php - 只是 echo 查询而不是 var_dump

c# - 如何用C#从php到asp.Net调用json_encode函数?

php - JOIN 表 MySQL 未在 PHP 中加入

php - 使用 AJAX 执行 SQL 查询并在成功执行后重定向

mysql - ERPNext 操作错误(2003, "Can' t 连接到 u'localhost' 上的 MySQL 服务器([Errno 22] 无效参数)")

php - MySQLi 查询不起作用,语法正确吗?

javascript - 从右向左滚动 div

javascript - jquery 调用 get 或 post 很慢

MySQL RESTRICT 和无操作

php - 如何在 Edit.php 页面上编辑后更新 Index.php 页面上的数据库值