我有一個MySQL表,我設置爲使用的編碼utf8_swedish_ci
。兩個示例值是2 Kung
和1 Krön
- 注意瑞典字符。我需要從PHP腳本中搜索這些國際化的字符串。我的PHP文件編碼在UTF-8
。我的代碼,錯誤處理剝離的清晰,看起來是這樣的:編碼問題與庫MySQLi
$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'.";
現在,如果我$值設置爲第一個例子中的值,我得到了一個匹配的行。使用另一個示例值,我不會獲得行。我已經測試了查詢在PHPMyAdmin中的工作。我認爲錯誤在於國際角色,因此我在某個地方搞亂了編碼。那麼我做錯了什麼,我該如何解決這個問題?
編輯:行$db->set_charset('UTF-8');
失敗,因爲我使用了不正確的字符集。它應該是utf8
。原來我的錯誤處理太少了,我應該在set_charset
之後檢查$db->error
。
你在哪裏錯了:在創建表的時候沒有指定編碼,因此它使用的默認。如何解決它:[將編碼更改爲一致。](http://stackoverflow.com/questions/6115612/how-to-convert-an-entire-mysql-database-characterset-and-collation-to-utf -8) – Sammitch 2014-10-10 19:25:53
@Sammitch你爲什麼認爲他沒有指定編碼? @David嘗試設置名稱並在列名和表名中使用反引號,因爲如果您在某些情況下不會導致問題。你還檢查'$價值'是否正確? – 2014-10-10 19:32:23
@Sammitch我確實指定了表格的編碼。 @LaciK我實際上使用反引號,當我將這個示例拉到一起時,將它們移除。我使用了'echo $ value',所以我相信它具有正確的價值。 – David 2014-10-10 20:03:18