PHP/AJAX:无法在 ajax 响应中显示外来字符

Posted

技术标签:

【中文标题】PHP/AJAX:无法在 ajax 响应中显示外来字符【英文标题】:PHP/AJAX : Can't display foreign character in ajax response 【发布时间】:2017-02-09 15:41:59 【问题描述】:

在我的数据库中,我有外国名字的特殊字符。我在 html 中正常输入该特殊字符时使用了<meta charset="utf-8">,它工作正常。但是,当我调用 ajax 请求并使用 html(data) 将该特殊字符显示到特定 div 中时,文本将更改为 ????? ??????? ????? 如何解决此问题

html

<div id="country_info"> </div>

js

$(document).on('change','#country_list', function()
     var thisVal_id = $(this).val();
  $.ajax(
    url:'../ajax/paraphernalia/ajax_displayCountry_info.php',
    type:'post',
    data: thisVal_id : thisVal_id , event_id : event_id,
    cache : false,
    success : function(data)
        $('#country_info').html(data);
    
 );
);

response.php

//this select option contains different foreign characters
$output .= '<select id="official_name" class="form-control" style="padding:0px; !important">';
        while($row1 = mysql_fetch_assoc($sql1))
            $output .= '<option value="'.$row1['name_official'].'">'.$row1['name_official'].'</option>';
        
$output .= '</select>';
echo $output;

【问题讨论】:

你可能想看看这个 *** answer。希望有帮助!! 谢谢你,但我使用mysql_set_charset("UTF8"); 将我的页面的每个顶部都放在了解决我的问题 【参考方案1】:

只需做一个小改动,这对我有用..

$output .= '<select id="official_name" class="form-control" style="padding:0px; !important">';
    while($row1 = mysql_fetch_assoc($sql1))
$name=mb_convert_encoding($row1['name_official'], 'HTML-ENTITIES', 'utf-8')
        $output .= '<option value="'.$name.'">'.$name.'</option>';
    
$output .= '</select>';
echo $output;

【讨论】:

以上是关于PHP/AJAX:无法在 ajax 响应中显示外来字符的主要内容,如果未能解决你的问题,请参考以下文章

php Ajax在等待响应时加载gif

php Ajax php响应头

PHP、AJAX、HTML、MySQL,单击按钮从数据库中获取信息

DataTables + PHP/AJAX - 在显示之前操作结果

一键显示两个图像。 PHP, AJAX

PHP Ajax响应在javascript解析时提供未定义的数据