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

时间:2009-10-27 17:16:58

标签: php javascript html

问题的短篇小说: 基本上我的问题是:如何设置javascript以使用UTF-8以便支持åäö,所以我的javascript可以将正确的值添加到下拉列表选项中?

LONGER EXPLANATION: 我使用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代码。 但是当从J SY SY SY SY SY SY SY SY SY SY SY SY <<<<<<<<<<<<<<<<<<<<<<<<<<

4 个答案:

答案 0 :(得分:1)

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

document.getElementById("somewhere").innerHTML="mytext";
myoption = document.createElement("option");
myoption.value="myvalue";
myoption.text=document.getElementById("somewhere").innerHTML;
myselect.add(myoption,null);

“somewhere”是页面中未使用的,隐藏的或特殊创建的元素。

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

答案 1 :(得分:0)

在发送到/从服务器接收之后尝试这些......

function encode_utf8( s ) {
  return unescape( encodeURIComponent( s ) );
}

function decode_utf8( s ) {
  return decodeURIComponent( escape( s ) );
}

答案 2 :(得分:0)

为避免出现任何问题,您应确保在客户端和服务器端正确处理内容。

使用PHP:utf8_encode()utf8_decode()

使用Javascript使用webtoolkit.utf8.jsUtf8.encode()Utf8.decode()

答案 3 :(得分:-1)

据我所知,问题出在服务器端,而不是客户端。换句话说,问题出在你的php中,而不是你的javascript。 尝试制作一个简单的PHP脚本来输出您的JavaScript请求。