问题描述
||
我有一个管理模块和一个前端模块。
我有一个类别部分。
我通过将文本框中的值通过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\'); ?>