[英]PDO utf8_encoding my text string twice in INSERT?
相關代碼:
$status = $db->run(
"INSERT INTO user_wall (accountID, fromID, text, datetime) VALUES (:toID, :fromID, :text, '" . time() . "')",
array(":toID" => $toID, ":fromID" => %accountID, ":text" => $text)
);
我從javascript中獲取輸入文本,將其拋入AJAX調用來處理它,它調用包含這些代碼行的函數。
有問題的文字字符串是:“ Türkçe Türkçe Türkçe!
”
在調查數據庫時,以下值保存為“ Türkçe Türkçe Türkçe!
”,這是雙utf8_encode'd。
通過從數據庫中選擇文本來查看文本時,我得到了“ Türkçe Türkçe Türkçe!
”,這就是它們應該首先保存在數據庫中的方式。
據我所知,我不是在編寫PDO准備的數據...
編碼是ab * tch。 您需要確保它在您想要的位置在幾個地方:
帶有Javascript的HTML頁面。 使用以下元標記將其設置為utf-8: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
與數據庫的連接。 連接到數據庫之后(以及任何其他查詢之前)執行查詢set names 'utf8'
。
您的數據庫字段。 在MySQL中,它被稱為整理,將其設置為utf8_general_ci
(ci代表不區分大小寫)。
如果你有這3個數據,你的數據應該始終是,並且保持utf-8(除非你自己編碼)。
為了更好地衡量,請確保您的源代碼文件也是utf-8。 Windows通常默認為iso。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.