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

问题描述

|| 我有一个管理模块和一个前端模块。 我有一个类别部分。 我通过将文本框中的值通过Ajax发布到PHP来创建类别。 管理员和前端字符集均为utf-8。 我读到认情况下,ajax使用utf-8编码。 当我发布数据时,它完美地保存在数据库中。 我可以在数据库中看到该unicode文本。 以及我在管理员和前端列出时可以看到它。 但 当我单击“编辑”时,我会使用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某些认值也没有效果。 我已附上以下屏幕截图 在新窗口或标签中打开图像以放大查看 在上图中,您可以看到utf char在列表中显示得很好,但是在使用ajax和json编辑时,它的位置为????在文本框中。 这是文本在数据库中的显示方式...     

解决方法

SET NAMES \'utf8\' COLLATE \'utf8_general_ci\'
这帮助我克服了这个问题。 建立连接后执行此查询。 我得到了这个信息形式的代码点火器框架,因为使用它,我的代码可以正常工作,但是当我直接使用mysql_query时,我无法获得预期的结果。 如果您使用的是代码点火器,则默认情况下会执行此操作,否则您必须包括该行。 我不接受将其作为我自己的答案,因为用户可能还会发布更多原因,因此我正在等待有关此问题的更多评论和答案。 无论如何,它现在正在工作。 此外,请确保表排序规则是utf8,并且该字段也是如此。     ,尝试两者之一: 在记事本中打开文件,点击保存,确保保存为utf-8,而不是Ansi。 (特别是提供JSON的那个) 强制您的响应为utf-8(对于php:
<?php header(\'Content-type: text/html; charset=utf-8\'); ?>