ASHX返回的JSON数据里有中文无法正常使用。

xml120 2011-11-22 09:35:16
通过ashx读取数据库返回json数组绑定select.

返回的json内容里有中文值、无法使用、改为只返回值是英文的属性就可以使用勒,怎么解决勒?

tips:

1、ashx,js,html都已另存为utf-8类型勒;
2、ashx和js代码(一部分):

StringBuilder sb = new StringBuilder("[");
string tpl = "\"id\":{0},\"text\":{1}";
foreach (DataRow dr in ds.Tables[0].Rows) {
sb.Append("{" + string.Format(tpl, dr["provinceid"], dr["provincename"]) + "},");
}
context.Response.ContentEncoding = Encoding.UTF8;
context.Response.Write(sb.ToString().Substring(0, sb.ToString().Length - 1) + "]");


$(function () {
$.getJSON("ajax/getaddress.ashx?type=p", function (data) {
$.each(data, function (i, v) {
$("#selProvince").append("<option value='" + v.id + "'>" + v.text + "</option>");
});
});
});


直接运行ashx,页面输出json数组正常:

[{"id":1,"text":北京},{"id":2,"text":天津},{"id":3,"text":河北},{"id":4,"text":山西},{"id":5,"text":内蒙古自治区},{"id":6,"text":辽宁},{"id":7,"text":吉林},{"id":8,"text":黑龙江},{"id":9,"text":上海},{"id":10,"text":江苏},{"id":11,"text":浙江},{"id":12,"text":安徽},{"id":13,"text":福建},{"id":14,"text":江西},{"id":15,"text":山东},{"id":16,"text":河南},{"id":17,"text":湖北},{"id":18,"text":湖南},{"id":19,"text":广东},{"id":20,"text":广西壮族自治区},{"id":21,"text":海南},{"id":22,"text":重庆},{"id":23,"text":四川},{"id":24,"text":贵州},{"id":25,"text":云南},{"id":26,"text":西藏自治区},{"id":27,"text":陕西},{"id":28,"text":甘肃},{"id":29,"text":青海},{"id":30,"text":宁夏回族自治区},{"id":31,"text":新疆维吾尔自治区},{"id":32,"text":香港特别行政区},{"id":33,"text":澳门特别行政区},{"id":34,"text":台湾}]
...全文
650 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿非 2011-11-22
  • 打赏
  • 举报
回复
。。。

确实
qwertxp 2011-11-22
  • 打赏
  • 举报
回复
LZ,你这杯具啊……字符串啊,引号都不加。
{"id":1,"text":"北京"}
xml120 2011-11-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhouyongli41 的回复:]
c#先编码下HttpUtility.UrlEncode();

js解码encodeURI()
[/Quote]

解码是decodeURI吧,我试了,还是不行,难道人品问题?
xml120 2011-11-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sandy945 的回复:]
http://mysun.iteye.com/blog/382053
[/Quote]

我ashx里中文值的部分加了编码、然后js这边解码还是不行勒

StringBuilder sb = new StringBuilder("[");
string tpl = "\"pid\":{0},\"pname\":{1}";
foreach (DataRow dr in ds.Tables[0].Rows) {
sb.Append("{" + string.Format(tpl, dr["provinceid"], HttpUtility.UrlEncode(dr["provincename"].ToString())) + "},");
}
context.Response.Write(sb.ToString().Substring(0, sb.ToString().Length - 1) + "]");



$.getJSON("ajax/getaddress.ashx?type=p", function (data) {
$.each(data, function (i, v) {
$("#selProvince").append("<option value='" + v.pid + "'>" + decodeURI(v.pname) + "</option>");
});
});


ashx输出正常:

[{"pid":1,"pname":%e5%8c%97%e4%ba%ac},{"pid":2,"pname":%e5%a4%a9%e6%b4%a5},{"pid":3,"pname":%e6%b2%b3%e5%8c%97},{"pid":4,"pname":%e5%b1%b1%e8%a5%bf},{"pid":5,"pname":%e5%86%85%e8%92%99%e5%8f%a4%e8%87%aa%e6%b2%bb%e5%8c%ba},{"pid":6,"pname":%e8%be%bd%e5%ae%81},{"pid":7,"pname":%e5%90%89%e6%9e%97},{"pid":8,"pname":%e9%bb%91%e9%be%99%e6%b1%9f},{"pid":9,"pname":%e4%b8%8a%e6%b5%b7},{"pid":10,"pname":%e6%b1%9f%e8%8b%8f},{"pid":11,"pname":%e6%b5%99%e6%b1%9f},{"pid":12,"pname":%e5%ae%89%e5%be%bd},{"pid":13,"pname":%e7%a6%8f%e5%bb%ba},{"pid":14,"pname":%e6%b1%9f%e8%a5%bf},{"pid":15,"pname":%e5%b1%b1%e4%b8%9c},{"pid":16,"pname":%e6%b2%b3%e5%8d%97},{"pid":17,"pname":%e6%b9%96%e5%8c%97},{"pid":18,"pname":%e6%b9%96%e5%8d%97},{"pid":19,"pname":%e5%b9%bf%e4%b8%9c},{"pid":20,"pname":%e5%b9%bf%e8%a5%bf%e5%a3%ae%e6%97%8f%e8%87%aa%e6%b2%bb%e5%8c%ba},{"pid":21,"pname":%e6%b5%b7%e5%8d%97},{"pid":22,"pname":%e9%87%8d%e5%ba%86},{"pid":23,"pname":%e5%9b%9b%e5%b7%9d},{"pid":24,"pname":%e8%b4%b5%e5%b7%9e},{"pid":25,"pname":%e4%ba%91%e5%8d%97},{"pid":26,"pname":%e8%a5%bf%e8%97%8f%e8%87%aa%e6%b2%bb%e5%8c%ba},{"pid":27,"pname":%e9%99%95%e8%a5%bf},{"pid":28,"pname":%e7%94%98%e8%82%83},{"pid":29,"pname":%e9%9d%92%e6%b5%b7},{"pid":30,"pname":%e5%ae%81%e5%a4%8f%e5%9b%9e%e6%97%8f%e8%87%aa%e6%b2%bb%e5%8c%ba},{"pid":31,"pname":%e6%96%b0%e7%96%86%e7%bb%b4%e5%90%be%e5%b0%94%e8%87%aa%e6%b2%bb%e5%8c%ba},{"pid":32,"pname":%e9%a6%99%e6%b8%af%e7%89%b9%e5%88%ab%e8%a1%8c%e6%94%bf%e5%8c%ba},{"pid":33,"pname":%e6%be%b3%e9%97%a8%e7%89%b9%e5%88%ab%e8%a1%8c%e6%94%bf%e5%8c%ba},{"pid":34,"pname":%e5%8f%b0%e6%b9%be}]
zhouyongli41 2011-11-22
  • 打赏
  • 举报
回复
c#先编码下HttpUtility.UrlEncode();

js解码encodeURI()
阿非 2011-11-22
  • 打赏
  • 举报
回复
xml120 2011-11-22
  • 打赏
  • 举报
回复
。。。CSDN现在好冷清。

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧