C#无刷新回调,回传中文出现乱码,加急,分不够加之!~~~~

seraph2 2007-12-12 09:49:41
本人用C#开发网站,使用 RAISECALLBACKEVENT这类的东西通过JAVASCRIPT回调C#代码,但传递中文时好像是UTF-8的中文码,而且内容还不全,我晕之

几天前还都好用的代码今天不好用了,原因是因为我在WEBCONFIG里面配置了globalization里面的编码规范,无论是REQUEST还是RESPONSE都设置成了"gb2312"码,但其他部分又必须这样设置,在此求各位同仁帮忙啊 !
...全文
95 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
seraph2 2007-12-12
  • 打赏
  • 举报
回复
问题解决了,我是采用与 xyb921 和 patann 两人的方法 类似的另一种编码,算是加密方法吧,因为纯粹的urlcode在我使用的底层中不太合适,不想该这么多,看来短时间内还真是麻烦啊,谢谢各位兄弟帮忙,马上散分


seraph2 2007-12-12
  • 打赏
  • 举报
回复
winner2050 希望你能理解一个问题,在软件开发的很多方面并不是你说的算的,在其他公司开发的产品中有很多产品本身就存在BUG,而针对于我现在所在的GIS行业来说更是如此 ,要么我自己书写WEB底层要么就使用他们提供的底层,而供货商提供的底层中就是以GB2312为主的编码规则,如果不关联到GIS我根本就不可能去修改默认得C#编码!
同时谢谢你的提醒!~~~~~~~~~~~
:)

patann 谢谢你的方法,对于普通系统来说确实可以,不过对于已经开发了80%的系统来说,我真的不想这么改啊,那样真的会死人的。有其他方法没?
流浪河 2007-12-12
  • 打赏
  • 举报
回复
public string DecodeData(string Url)
{
WebRequest r = WebRequest.Create(Url);
WebResponse w = r.GetResponse();
//
// 先看看charset是否为空
//
String charset = string.Empty;
String ctype = w.Headers["content-type"];
if (ctype != null)
{
int ind = ctype.IndexOf("charset=");
if (ind != -1)
{
charset = ctype.Substring(ind + 8);
}
}

//把数据保存到内存中
MemoryStream rawdata = new MemoryStream();
byte[] buffer = new byte[1024];
Stream rs = w.GetResponseStream();
int read = rs.Read(buffer, 0, buffer.Length);
while (read > 0)
{
rawdata.Write(buffer, 0, read);
read = rs.Read(buffer, 0, buffer.Length);
}

rs.Close();

//
// 从抓取的数据分析编码
//
if (charset == null)
{
MemoryStream ms = rawdata;
ms.Seek(0, SeekOrigin.Begin);

StreamReader srr = new StreamReader(ms, Encoding.ASCII);
String meta = srr.ReadToEnd();

if (meta != null)
{
int start_ind = meta.IndexOf("charset=");
int end_ind = -1;
if (start_ind != -1)
{
end_ind = meta.IndexOf("\"", start_ind);
if (end_ind != -1)
{
int start = start_ind + 8;
charset = meta.Substring(start, end_ind - start + 1);
charset = charset.TrimEnd(new Char[] { '>', '"' });
}
}
}
}
return charset.ToString();
}

我是先取得目标的编码然后再在本地根据编码去取
catvv 2007-12-12
  • 打赏
  • 举报
回复
aaa.aspx?Name=<%# Server.UrlEncode(Eval("数据字段").ToString()) %>

不用这个处理UrlDecode,直接是汉字
patann 2007-12-12
  • 打赏
  • 举报
回复
在javascript中试下用这个函数:escape()
如AAAAA.aspx?n=escape('测试中文')
winner2050 2007-12-12
  • 打赏
  • 举报
回复
设置成了"gb2312"码就是错的,应该使用UTF-8编码。

ASP.net都是默认用UTF-8,不要多此一举胡乱改编码设置。
seraph2 2007-12-12
  • 打赏
  • 举报
回复
其实最可恨的是我将传递后的代码转换后“铁东区1”转换完变成“铁东?”了,转换代码肯定没问题的,就是说整个代码都没问题,就是配置哪里不对

我现在头好大啊
seraph2 2007-12-12
  • 打赏
  • 举报
回复
这个我也考虑过,因为使用的是无刷新回调,那种方法对于我使用的结构来说不太合适,容易给系统造成数据屏障
xyb921 2007-12-12
  • 打赏
  • 举报
回复
试试对中文字符进行UrlEncode和UrlDecode处理
seraph2 2007-12-12
  • 打赏
  • 举报
回复
确实只是编码问题,可能在某个位置配置一些猜数就好用了,可惜我不知道,而象 MisterDotNet 的说法我早就试过了,根本不起作用,因为在脚本处我设置了ALERT(str)中文一切正常,在C#代码中检查了编码,确实是"GB2312",而传递回来的中文又确实不是"GB2312",我快傻了!

救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!救命啊!
MisterDotNet 2007-12-12
  • 打赏
  • 举报
回复
<META http-equiv="Content-Type" content="text/html; charset=gb2312">
MisterDotNet 2007-12-12
  • 打赏
  • 举报
回复
一般就是编码的问题
freeboy827 2007-12-12
  • 打赏
  • 举报
回复
编码,解码

62,041

社区成员

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

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

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

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