【发布时间】:2011-09-01 18:36:33
【问题描述】:
我有一个管理模块和一个前端模块。
我有一个类别部分。
我通过 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 字符在列表中很好地显示,但是当使用 ajax 和 json 进行编辑时,它显示为 ????在文本框中。
这是文本在数据库中的显示方式...
【问题讨论】:
-
如果您发布执行 ajax 调用的代码,并且发布来自服务器的 JSON 响应,这将有所帮助。
-
可能是实体编码的问题。
-
我已按照 Pointy 的要求通过添加文本和屏幕截图来更新问题。
-
我正在使用 codeigniter 框架,它默认将编码设置为 utf-8。
标签: javascript ajax unicode