使用ajax获取时,unicode文本未按预期显示

时间:2011-05-25 13:17:31

标签: javascript ajax unicode

我有一个管理模块和一个前端模块。

我有一个类别部分。

我通过ajax将文本框中的值发布到php来创建类别。 管理员和前端字符集都是utf-8。

我读到默认情况下ajax使用utf-8编码。

当我发布数据时,它完全保存在数据库中。

我可以在数据库中看到unicode文本。

以及我在管理员和前端列出时都可以看到它。

BUT

当我点击编辑我所做的是我使用ajax / json从服务器获取数据

我得到的只是?????而不是unicode文本。

在正常加载的情况下,它显示得很好。

可能是什么问题......我错过了什么?


修改

var jax = createAjax();
jax.open("POST",path,true)  
jax.setRequestHeader('Content-type','application/x-www-form-urlencoded; charset=utf-8');
jax.onreadystatechange = afunction;

这是php代码

$query = "select * from $box where id=$id";
if(! ($res = mysql_query($query)))die(mysql_error());
$rs = mysql_fetch_array($res,1);
$rs['status'] = 1;
header("Content-Type: text/html; charset=utf-8");
die(json_encode($rs));

我已将上述内容用于请求和响应......即使我已将utf-8更改为iso-85 ** - 1某些默认但没有效果的内容。

我已经附上了下面的屏幕截图 在新窗口或标签页中打开图片以查看更大的图片 enter image description here

在上面的图片中你可以看到utf char在列表中很好地显示但是在编辑ussing ajax和json时它被显示为????在文本框中。

enter image description here

以下是文本在db中的显示方式...... enter image description here

2 个答案:

答案 0 :(得分:1)

SET NAMES 'utf8' COLLATE 'utf8_general_ci'
这帮助我解决了这个问题。

在建立连接后执行此查询。

我得到了这个信息表格代码点火器框架因为使用我的代码工作得很好但是当我直接使用mysql_query时我无法得到预期的结果。

如果您使用代码点火器,则默认情况下会这样做,否则您必须包含该行。

我不接受这个作为我自己的答案,因为可能有更多原因可以由用户发布,所以我正在等待这个问题的更多评论和答案。

无论如何它现在正在运作。

此外,请确保表格排序是utf8,并且该字段也是。

答案 1 :(得分:0)

尝试两者之一:

  1. 在记事本中打开文件,点击保存,确保保存在 utf-8 中,而不是 Ansi 。 (特别是提供JSON的那个)
  2. 强制您的回复为utf-8(对于php:<?php header('Content-type: text/html; charset=utf-8'); ?>