我試圖通過PHP將一些數據插入到表中,但像Æ和Ð這樣的冰島字符似乎並未正確傳輸到MySQL。我有一個使用mysqli傳輸數據到MySQL的PHP腳本,我在文件(mysqli-> query(「SET NAMES'utf-8')中有set_charset('utf-8'))也不工作)MySQL,PHP和utf8
數據庫,表格及行都有整理UTF8,Unicode的CI
如果我更新的phpmyadmin內的數據,然後自動曝光和d出來正確但如果它使用我的腳本是。:
$stmt = $conn->prepare("UPDATE filters SET filter_nr = ?, filter_maker = ?, color = ?, bold = ? WHERE id = ?");
if (false === $stmt)
error_log("connection failed: ". $conn->error);
else
{
if ($newline["filter_nr"] === "MP")
error_log(mb_detect_encoding($newline["filter_maker"]));
$bold = (int) $newline["bold"];
$id = (int) $newline["id"];
$fnr = $newline["filter_nr"];
$fmaker = Encoding::fixUTF8($newline["filter_maker"]);
$color = $newline["color"];
header('Content-Type: text/html; charset=utf-8');
$stmt->bind_param("sssii", $fnr, $fmaker, $color, $bold, $id);
$stmt->execute();enter code here
該數據似乎包含Æ和Ð罰款到這裏(至少他們表明你p在XMLHttpRequest日誌中的chromes devtools中很好)但是一旦它們進入數據庫,Æ和Ð就會被加擾。
我測試了數據庫中的十六進制值,它們是不同的。來自我的PHP腳本的數據編碼爲C383E280A0(在瀏覽器中顯示爲×),但來自phpmyadmin的數據編碼爲C386,在瀏覽器中顯示爲Æ。
感謝Dagon,使用utf8mb4做到了。 – ojs 2015-02-09 01:35:29
MySQL charset被稱爲「utf8」,而不是「utf-8」(不包括引號和短劃線)。 – deceze 2015-02-09 01:41:48