![](/img/trans.png)
[英]Inserting UTF-8 encoded string into UTF-8 encoded mysql table fails with “Incorrect string value”
[英]INSERTing UTF-8 string into MySQL table
我正在努力從PHP腳本中將UTF-8編碼的字符串插入MySQL表:
該表設置為歸類“ utf8_unicode_ci”,該字段是文本字段,也歸類為“ utf8_unicode_ci”。 正在從另一個站點讀取該字符串,如下所示:
$str = "Bonka bдver, е hцra va man bara ta't en fika.";
...在INSERT之前一切都看起來不錯。 如果我echo($ str); 我看到了unicode字符:
Bonka bдver, е hцra va man bara ta't en fika.
...但是當我嘗試將此字符串插入MySQL表時,如下所示:
$sql = "INSERT INTO mytable (id, mystring)
VALUES ('','".addslashes($str)."');";
if ( !mysqli_query( $mysqli, $sql ) ) {
printf("Error: %s\n", mysqli_error( $mysqli ) );
die();
}
...寫入數據庫的內容是:
Bonka bдver, е hцra va man bara ta't en fika.
我很確定表是正確的,(因為我嘗試通過PhpMyAdmin插入相同的字符串,並且工作正常),而且我很確定源字符串是正確的,(因為我可以通過echo()輸出它,在unicode中),所以我猜問題一定是我插入它的方式嗎? 我究竟做錯了什么?
PS。 我沒有在$ str上使用addlashes()進行嘗試,但是隨后我得到了錯誤:
Error: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 't en fika.
感謝您的光臨!
使用mysqli_set_charset將連接上的字符集設置為UTF-8。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.