德语特殊字符在通过 ajax 提交时卡住


German special characters get stuck when submitting via ajax

我正在通过jquery.ajax向结果div提交参数(包括ä,ö,ü等特殊字符)。在那个div 中,我需要用 php 处理它。

例如:

$( document ).ready(function() {
    $('#dropdown').change(function() {
        $.ajax({
            url: "inc/ajax.results.php",
            type: "GET",
            data: 'type='+$('#type').val()
        }).done(function(data){
            $("#results").html(data);
        });
    });
});

在此示例中,"type"的值为"Müller"。在我的"ajax.results.php"中,我这样做:

<?= $_GET['type'] ?>
// Output is 'Müller' in Firefox and Chrome
// BUT in internet explorer the output is 'M'

所以,对于Firefox和Chrome来说很好,但是在Internet Explorer中,结果是"M"(M后跟一个正方形)...

我尝试像这样更改输出:

<?= utf8_encode($_GET['type'] ?>
// Output in internet Explorer now is fine (Müller)
// BUT in Firefox and Chrome it is 'Müller'

由于输出必须通过 PHP(因为我会用它做进一步的操作),我找不到解决方案......

任何人都可以帮助解决这个问题吗?多谢

在包含下拉列表的 HTML 页面上,插入

<meta charset="utf-8"> 

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

在标签内。

并确保将所有文件另存为 UTF-8(或更好的是:不带 BOM 的 UTF-8)

默认情况下,Apache 服务器配置为在 ISO-8859-1 中提供文件,因此您需要将以下行添加到您的 .htaccess 文件中:

AddDefaultCharset UTF-8

谢谢大家的帮助。

我自己找到了解决方案:我已经将"encodeURIComponent()"添加到我的 ajax 请求中,它可以工作:-)

$( document ).ready(function() {
    $('#dropdown').change(function() {
        $.ajax({
            url: "inc/ajax.results.php",
            type: "GET",
            data: 'type='+encodeURIComponent($('#type').val())
        }).done(function(data){
            $("#results").html(data);
        });
    });
});