簡體   English   中英

在INSERT中PDO utf8_encoding我的文本字符串兩次?

[英]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。 您需要確保它在您想要的位置在幾個地方:

  1. 帶有Javascript的HTML頁面。 使用以下元標記將其設置為utf-8: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

  2. 與數據庫的連接。 連接到數據庫之后(以及任何其他查詢之前)執行查詢set names 'utf8'

  3. 您的數據庫字段。 在MySQL中,它被稱為整理,將其設置為utf8_general_ci (ci代表不區分大小寫)。

如果你有這3個數據,你的數據應該始終是,並且保持utf-8(除非你自己編碼)。

為了更好地衡量,請確保您的源代碼文件也是utf-8。 Windows通常默認為iso。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM