Php javascript和utf-8/特殊字符帮助

Php javascript和utf-8/特殊字符帮助,php,javascript,html,Php,Javascript,Html,问题的简短版本: 所以基本上我的问题是:如何设置javascript使用UTF-8,以便支持åäö,这样我的javascript就可以向下拉列表选项添加正确的值 详细解释: 我用javascript在主页上的下拉列表中填写“选项”。 下拉列表的形式是调用php脚本,该脚本查询mysql数据库 问题是,我在mysql数据库中使用了特殊字符,如åäö。 当我像这样查询mysql数据库时: SELECT * FROM database WHERE city = $city 它什么也找不到 这

问题的简短版本: 所以基本上我的问题是:如何设置javascript使用UTF-8,以便支持åäö,这样我的javascript就可以向下拉列表选项添加正确的值

详细解释: 我用javascript在主页上的下拉列表中填写“选项”。 下拉列表的形式是调用php脚本,该脚本查询mysql数据库

问题是,我在mysql数据库中使用了特殊字符,如åäö。 当我像这样查询mysql数据库时:

    SELECT * FROM database WHERE city = $city
它什么也找不到

这是因为$city包含javascript设置的特殊字符。 但是如果在没有javascript的情况下设置$city变量,例如在我的html文档中使用

      option value=åäö
那就行了。这意味着javascript是问题所在,它将特殊字符设置为其他字符,这使得查询无法找到任何内容

填充我的下拉列表的javascript:

                    if(document.nav_form_main.nav_city_list.value == '4'){
        removeAllOptions(document.nav_form_main.nav_city_list);
        addOption(document.nav_form_main.nav_city_list, "Göteborg",             "Göteborg", "");
        addOption(document.nav_form_main.nav_city_list, "goteborg_closeby", "Angränsande områden", "");
        addOption(document.nav_form_main.nav_city_list, "1", "Hela Sverige", "");
        addOption(document.nav_form_main.nav_city_list, "other_area", "-- Välj område på nytt --", "");
    }
    function removeAllOptions(selectbox)
    {
var i;
for(i=selectbox.options.length-1;i>=0;i--)
{
    //selectbox.options.remove(i);
    selectbox.remove(i);
}
    }


    function addOption(selectbox, value, text )
    {
var optn = document.createElement("OPTION");
optn.text = text;
optn.value = value;

selectbox.options.add(optn);
    }
我的HTML主文档使用:ISO 8859-1

在我的PHP代码中,当回显ÄÄÖ时,它起作用。
但是当从JAVASCRIPT回显变量时,ÄÄÖ被奇怪的符号替换

在发送到服务器之前或从服务器接收之后尝试这些符号

function encode_utf8( s ) { return unescape( encodeURIComponent( s ) ); } function decode_utf8( s ) { return decodeURIComponent( escape( s ) ); }
据我所知,问题出在服务器端,而不是客户端。换句话说,问题在于php,而不是javascript。
尝试制作一个简单的php脚本来输出javascript请求。

为了避免任何类型的问题,您应该确保在客户端和服务器端正确处理您的内容

使用PHP:utf8_编码和utf8_解码


使用Javascript使用:Utf8.encode和Utf8.decode

以下是我解决此问题的方法:

document.getElementById("somewhere").innerHTML="mytext";
myoption = document.createElement("option");
myoption.value="myvalue";
myoption.text=document.getElementById("somewhere").innerHTML;
myselect.add(myoption,null);
页面中有一个未使用、隐藏或特殊创建的元素


当javascript从innerHTML读取时,您会得到正确的字符。

问题很可能在于如何将javascript传输到服务器。使用firebug,您可以在请求中显示发送到服务器的内容吗?它应该是什么?我也这么认为,但我已经将.js文件保存为utf-8格式。。。服务器的格式都是正确的,但无论我做什么,我都无法使js文件的格式相同。。。当我写特殊字符时,会从js文件转到其他文件。我没有firebug。显示填充下拉列表的代码。服务器是否实际将文件作为UTF-8提供服务?将其保存为UTF-8是必要的,但正确地提供服务也是必要的。如果您的服务器以其他方式(如ISO 8859-1)提供服务,则浏览器无法正确读取内容。如何设置wampserver以正确提供服务?当我输出ÄÖ时,它在我的php代码中工作,但当输出回显javascript下拉列表中包含ÄÖ的变量时,它会显示另一个字符。。。