日期:2014-05-16  浏览次数:20778 次

javascript编码问题 。。。 - Web 开发 / Ajax
这是JS代码 :
<script language="javascript" type="text/javascript">
function lookup(inputString){
if(inputString.length == 0){
$('#suggestions').hide();
}else {
$.post("http://localhost/dedev51/ask/search_info.php",{queryString:""+inputString+""},function(data){
if(data.length > 0) {
$('#suggestions').show();
$('#autoSuggestionsList').html(data);
}
});
}
}

function fill(thisValue) {
$('#inputString').val(thisValue);
setTimeout("$('#suggestions').hide();",100);
}
</script>

这是PHP代码 :
<?php
header("content-type:text/html; charset=gb2312"); 
require_once './include/common.inc.php';  
//搜索提示
if(isset($_POST['queryString'])){
$queryString = trim($queryString);
//var_dump($queryString);
if(strlen($queryString) > 0){
//$query = "SELECT * FROM {$cfg_dbprefix}ask WHERE title LIKE '%".$queryString."%' LIMIT 5";
$query = "select id, tid, tidname, tid2, tid2name, uid, title, reward, dateline, status, replies from {$cfg_dbprefix}ask where title like '%$queryString%'";

var_dump($query);
$dsql->Execute('me',$query);
$xgques = array();
while($row = $dsql->getarray()){
$row['title'] = cn_substr($row['title'],40);
//var_dump($row['title']);
//echo '<li onClick="fill(\''.$row['title'].'\');">'.$row['title'].'</li>';
//echo '<li onClick="window.open(question.php);">'.$row['title'].'</li>';
echo '<li><a href="question.php?id='.$row['id'].'" target="_blank">'.$row['title'].'</a></li>';
}
}
}
?>

搜索只能是英文,不支持中文,当搜索的结果中标题含有中文时显示乱码,所以我在PHP代码上加了
header("content-type:text/html; charset=gb2312");
显示中文正常了,但还是不能输入中文进行搜索,返回的SQL查询语句中 title like "这里是乱码"
所以我想应该是JS传中文值的时候出错,不能传递中文值。

我想问下大家,JS怎么强制编码 ?

如果不是这个原因,还可能是哪些原因呢?

------解决方案--------------------
HTML里面应该也要加上标识
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" lang="zh-CN">

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

这里面的东西你是否省略了