簡體   English   中英

以 jQuery Ajax 表單提交的錯誤字符集

[英]Bad charset submitted in jQuery Ajax form

在我的索引 PHP 頁面中,我定義了這個字符集:

header("Content-Type: text/html; charset=UTF-8");

並在帶有meta標記的 HTML 中:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

在此頁面上,我使用 Ajax (jQuery) 提交了一個表單:

$('#action_button').click(function() {
        var azione = $('#form-post').attr('action');
        var datiform = $('#form-post').serialize();
        send = $.ajax({
            type: "POST",
            url: azione,
            data: datiform,
            dataType: "json",
            beforeSend: function(){
                 ...
            },
            success: function(msg){
                ...
            }
        });
        return false;
    });

在接收數據的頁面中,我設置了 header

header("Content-Type: text/html; charset=UTF-8");

我請求發布數據:

$nome = htmlentities(rtrim(ltrim(strip_tags(addslashes($_POST['nome']))))) ;

但數據未在數據庫中正確注冊; 字符 òèìùàé 被錯誤地解釋,例如 ÄÃ 和類似的。 我測試了不同的方法,但沒有成功,但如果我發送沒有 Ajax (jQuery) 的表單,它工作正常!

問題可能出在您的數據庫中。 你可以echo $nome; 為了確定。 我建議您嘗試使用此 function 連接到數據庫。 還將您的表格字符集轉換為utf8_unicode_ci ...

function connect($server, $database, $username, $password, $charset = "UTF8"){
    $link = mysql_connect($server, $database, $password);
    if(!$link){
        die("Unable to connect to database server.");
    }
    mysql_selectdb($database);
    if(function_exists("mysql_set_charset")){
        mysql_set_charset($charset, $link);
    }else{
        mysql_query("SET NAMES $charset");   
    }
}

設置表格字符集...

ALTER TABLE `my_table` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci

數據庫...

ALTER DATABASE `my_database` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci

暫無
暫無

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

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