簡體   English   中英

PHP / MySQL / jQuery中的字符編碼問題

[英]Character encoding problem in PHP/MySQL/jQuery

我在PHP中創建了一些CMS,它使用來自MySQL的數據進行操作。
在我的CMS中,我有一些輸入字段,我想在其中實現jQuery的花式自動完成。 基本上,我的想法是從MySQL表創建jQuery的數組......

我正在使用PHP 5.3.0,MySQL 5.0.82和Eclipse 3.4.2。 我在Eclipse中的PHP項目是UTF-8編碼的。 我的CMS頁面采用UTF-8字符編碼( <meta http-equiv="Content-type" content="text/html; charset=UTF-8" /> )。 網站本身也采用UTF-8編碼。 MySQL數據庫,所有表都是UTF-8(utf8_general_ci)。

在這一點上,如果我只輸入字母(甚至國際和一些奇怪的符號),一切正常,但如果我輸入其中一些字符"&<> ,我會遇到一些嚴重的問題......

當我輸入這樣的文本時,我的數據庫中的一切看起來都很好,但是當我嘗試為jQuery創建一個數組時,它會因為引號而產生錯誤(我想這里甚至單引號都有問題)...所以我想我應該以某種方式逃脫他們吧? 然后我使用PHP的htmlspecialchars並正確創建jQuery的數組。 即使我在輸入字段內部單擊並開始鍵入文本,自動完成也會正確顯示所有這些字符。 但是,如果我實際選擇其中一個帶有這些字符的記錄,它們會突然顯示為html的轉義字符( &quot;&amp;&lt;&gt; )。 所以我嘗試將htmlspecialchars_decode應用於同一輸入字段,但它沒有幫助......當我從jQuery的自動完成中選擇一條記錄時,有沒有辦法在輸入字段中正確顯示這些字符?

我試圖谷歌問題,但我找不到任何解決我的問題...請幫忙!
提前致謝!


編輯:這是我為jQuery創建數組的方式( $tags只是一個簡單的數組):

<?php
$t = implode(", ", $tags);
?>
<script>
$(document).ready(function(){
    var data_tags = "<?php echo htmlspecialchars($t); ?>".split(" | ");
    $("#input_tags").autocomplete(data_tags, { multiple: true, multipleSeparator: ", " });
});
</script>

我知道它可能不是最好的方式,但通常它的工作原理:)

我這樣生成一個輸入字段:

<?php

function inputField($label, $name, $type, $size, $default=NULL, $misc=NULL){

    $printInput = "<tr><td align=\"right\" valign=\"top\">\n";
    $printInput .= $label;
    $printInput .= "</td><td>\n";
    $printInput .= "<input type=\"".$type."\" size=\"".$size."\" name=\"".$name."\" id=\"".$name."\" value=\"".$default."\"> ".$misc."\n";
    $printInput .= "</td></tr>\n";

    return $printInput;

}

echo inputField("TAGS", "input_tags", "text", 70, $db_tags);
?>

試試json_encode() ,它需要PHP 5.2.0或更高版本。

編輯您不需要圍繞json_encoded值的引號:

var data_tags = <?php echo json_encode($t); ?>;

嘗試使用htmlentities(); 代替。

暫無
暫無

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

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