0
我有兩臺服務器。每個都運行PHP/MySQL。我將剪貼板中的6個字符的字符串粘貼到兩個數據庫中新創建的表中。對錶列的檢查表明,在兩臺服務器上,charset和collation都設置爲「utf8」和「utf8 general ci」。然後,我在兩臺服務器上運行以下相同的腳本。來自MySQL的亂碼字符
<meta charset="utf-8">
<?php
$sql = "SELECT * FROM temp";
$link=mysqli_connect($DB_SERVER,$DB_LOGIN,$DB_PASSWORD,$DB);
$result=mysqli_query($link,$sql);
mysqli_close($link);
$row=mysqli_fetch_object($result);
$details=$row->details;
echo $details;
?>
一臺服務器發送以下屏幕
â€~good’
其他在同一瀏覽器將其發送至屏幕(火狐)
'好'
任何人都可以發現問題或建議我如何解決這個問題?
如何將數據*轉換爲* mysql?字符也可能在進入時被破壞。你說你從剪貼板中複製它,但它必須比這更復雜:你使用什麼程序來實際獲取數據到mysql?這顯然不能解決你的問題,但要指出的是,首先可能發生的修改的唯一原因是你的單引號實際上不是單引號,而是unicode字符,最有可能是U + 2018和U + 2019 –
我會直接檢查兩個數據庫以查看數據庫所在的內容(最好使用命令行中的mysql)。如果你看到兩個都是一樣的,那麼這些角色可能會在輸出時被損壞。如果一個人存儲了不同的結果,那麼你的角色在輸入時會受到損壞。 –
請參閱https://stackoverflow.com/questions/38363566/trouble-with-utf8-characters-what-i-see-is-not-what-i-store中的「Mojibake」 –