1

我的网站:www.egemen.dk

我正在开发一个网站,但在 IE 上遇到特殊字符问题。在我的网站上有一个包含多个姓氏的下拉框。这些姓氏可以包含特殊字符,如 ô、î、ö 等。从数据库中获取这些姓氏以构建下拉列表并正确显示特殊字符时一切正常,但是,用户应该能够选择姓氏并执行搜索. 在选择具有特殊字符的末世时,该代码调用JavaScript方法连接到数据库。在 FF 和 safari 中它可以工作,但在 IE 中它不能正确地将这些特殊字符发送到 javascript。任何想法?

Javascript:

<script>
function searchUser(str)
{
    var call ="/Data/controller.php?cmd="+str;
    if(str == "searchByName"){
        call += "&name=" + document.getElementById("s_name").value;
        call += "&lname=" + document.getElementById("s_lname").value;
    }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET", call ,true);
    xmlhttp.send();
    }
    </script>

索引.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1  /DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />

我也尝试过使用 utf-8 作为 meta 中的字符集。

4

2 回答 2

0

发生了一些奇怪的事情,因为浏览器使用 windows-1252 编码显示页面,即使页面似乎有一个meta声明 UTF-8 的标记(并且 HTTP 标头未指定编码)。解释是,如果您使用验证器检查代码,您会看到标签中有错字:

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

前面的引号utf-8应该去掉。

这会影响提交时表单数据的编码。默认情况下,它与页面的编码相同。它应该是 UTF-8 以确保正确发送所有字符。

于 2013-06-13T11:14:10.140 回答
0

这些值需要使用 URL 编码encodeURIComponent()

var call ="/Data/controller.php?cmd="+encodeURIComponent(str);
if(str == "searchByName"){
    call += "&name=" + encodeURIComponent(document.getElementById("s_name").value);
    call += "&lname=" + encodeURIComponent(document.getElementById("s_lname").value);
}
于 2013-06-13T09:40:25.123 回答