【问题标题】:javascript and utf-8 / special characters helpjavascript 和 utf-8 / 特殊字符帮助
【发布时间】:2009-10-27 17:16:58
【问题描述】:

问题的简短版本: 所以基本上我的问题是:如何将 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 中呼应变量时,ÅÄÖ 会被奇怪的符号取代

【问题讨论】:

  • 问题很可能在于您如何从 javascript 传输到服务器。使用萤火虫可以显示您在请求中发送到服务器的内容吗?它应该是什么?
  • 我也是这么认为的,但是我已经将.js文件保存为utf-8格式...服务器的格式都是正确的,但是无论我做什么,我都无法将js文件保存到采用相同的格式...当我写特殊字符时,从 js 文件转向其他内容。我没有萤火虫。
  • 向我们展示填充下拉列表的代码
  • 服务器实际上是否以 UTF-8 格式提供文件?将其保存为 UTF-8 是必不可少的,但正确地提供它也是如此。如果您的服务器将其作为 ISO 8859-1 之类的其他内容提供服务,则浏览器将无法正确读取内容。
  • 如何设置 wampserver 以正确服务?

标签: php javascript html


【解决方案1】:

我是这样解决这个问题的:

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

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

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

【讨论】:

    【解决方案2】:

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

    函数 encode_utf8( s ) { 返回 unescape(encodeURIComponent(s)); } 函数 decode_utf8( s ) { 返回 decodeURIComponent(escape(s)); }

    【讨论】:

      【解决方案3】:

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

      使用 PHP:utf8_encode()utf8_decode()

      使用 Javascript 使用 webtoolkit.utf8.js: Utf8.encode()Utf8.decode()

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 当我输出 Å Ä Ö 它在我的 php 代码中工作,但是当从我的 javascript 下拉列表中输出(回显)包含 ÅÄÖ 的变量时,它会显示另一个字符...
        猜你喜欢
        • 2016-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多