我等了一年了,也没有人能帮我解决此问题。 http://community.csdn.net/Expert/topic/5366/5366077.xml?temp=.6637689 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 return Encoding.GetEncoding(To).GetString(Encoding.GetEncoding(From).GetBytes(str));感觉是Encoding.GetEncoding的问题!我也做过一个类似的东西,就是因为读取文件的Bytes然后显示出来就是乱码了! 以下是去年用另外一个帐户问的同样问题http://community.csdn.net/Expert/topic/5351/5351114.xml?temp=.7420465http://community.csdn.net/Expert/topic/5348/5348369.xml?temp=.4643976http://community.csdn.net/Expert/topic/5342/5342300.xml?temp=1.884097E-02 protected void Page_Load(object sender, EventArgs e) { string a = "中华人民共和国"; Response.Write(ConertStr(a, "utf-8", "gb2312")); Response.Write("<br>"); Response.Write(ConertStr(a, "gb2312", "utf-8")); } string ConertStr(string str, string From, string To) { byte[] bs = System.Text.Encoding.GetEncoding(From).GetBytes(str); bs = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding(From), System.Text.Encoding.GetEncoding(To), bs); string res = System.Text.Encoding.GetEncoding(To).GetString(bs); return res; } 先用urlencode再urldecode *****************************************************************************欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 最新版本:20070212http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html 单数?双数? 没遇见过,是否是半角全角的问题???另外UTF8是压缩传输的(虽然长度应该是GB2312的两倍,但实际上并没那么多) 会不会有这个原因? return Encoding.GetEncoding(To).GetString(Encoding.GetEncoding(From).GetBytes(str));代码读取有问题! 为什么要做这个转换呢?你把整个网站的编码统一为GB2312或者utf8看看 protected void Page_Load(object sender, EventArgs e) { string a = "中华■人民共3和国2●"; //这里的■32●是全角字符 也未出现错误 Response.Write(ConertStr(a, "utf-8", "gb2312")); Response.Write("<br>"); Response.Write(ConertStr(a, "gb2312", "utf-8")); } string ConertStr(string str, string From, string To) { byte[] bs = System.Text.Encoding.GetEncoding(From).GetBytes(str); bs = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding(From), System.Text.Encoding.GetEncoding(To), bs); string res = System.Text.Encoding.GetEncoding(To).GetString(bs); return res; } 我之前也遇到过乱码,而且是有些页面会有些不会,在web.config把所有编码改成utf-8就好了,根本不需要转换。 Google了一下,感觉问题是在UpdatePanel。好像不论你的服务器requestEncoding和responseEncoding怎么配置,UpdatePanel总是用Utf-8输出,而你的website是设定成GB2312德,所以有乱码。你的解决方法并不是正统的编码转换,而是一个Hack方案:ConvertStr(str, "GB2312", "UTF-8")这个调用先把str用GB2312解码成一个byte[],然后把这个本应该是GB2312的byte[]强制使用UTF-8编码成字符串,结果就是一个乱码子串(你可以打印出来看一下)。之所以客户显示有时候正常,是因为UpdatePanel内部又把它按UTF-8解析输出,然后的结果如果按GB2312显示的话和原先的恰好一样。原字符串 ---> gb2312 byte[] ---> utf-8 编码 (乱码) --> UpdatePanel uft-8解码输出 --> IE按gb2312显示这个方案的问题是Gb2312和utf-8不兼容,gb2312 byte[]不能完全用utf-8编码,有些字节会被丢弃。不用javascript的话没有好的解决方法。我想得到的方法是把output用BASE64编码,输出到client,然后javascript解码并且输出。 下面的程序模拟这个过程,尝试不同的输入,有时候输出正常,有时候是乱码。using System;using System.Collections.Generic;using System.Text;namespace EncodingTest{ class Program { public static string Convert(string str, string From, string To) { return Encoding.GetEncoding(To).GetString(Encoding.GetEncoding(From).GetBytes(str)); } public static string Output(string str) { StringBuilder sb = new StringBuilder(); foreach (char c in str) { sb.AppendFormat("{0:X} ", (int)c); } return sb.ToString(); } static void Main(string[] args) { string str = "什么啊"; string cov1 = Convert(str, "GB2312", "UTF-8"); string cov2 = Convert(cov1, "UTF-8", "GB2312"); Console.WriteLine("{0}\t=\t{1}", str, Output(str)); Console.WriteLine("{0}\t=\t{1}", cov2, Output(cov2)); } }} 如何实现ASP.NET有错误自动发送邮件。 请求这样的委托为什么得不到结果呢,结果总是空的?急! E-mail发送,基于smtp PrintDocument的倍宽打印问题. 如何使鼠标移动到按钮上,使按钮有框框的效果 arraylist排序问题 非常急,兄弟们请帮帮忙 2005定义串口DataReceive事件问题 <authentication mode="?" />各种验证策略设置? 如何填充comboBox控件,急!!! .net 编写的windows控件在html页面的适用性问题,熟手帮忙阿。。 如何在数据库中搜索字符串(用c#)
感觉是Encoding.GetEncoding的问题!我也做过一个类似的东西,就是因为读取文件的Bytes然后显示出来就是乱码了!
http://community.csdn.net/Expert/topic/5351/5351114.xml?temp=.7420465
http://community.csdn.net/Expert/topic/5348/5348369.xml?temp=.4643976
http://community.csdn.net/Expert/topic/5342/5342300.xml?temp=1.884097E-02
{
string a = "中华人民共和国";
Response.Write(ConertStr(a, "utf-8", "gb2312"));
Response.Write("<br>");
Response.Write(ConertStr(a, "gb2312", "utf-8")); } string ConertStr(string str, string From, string To)
{ byte[] bs = System.Text.Encoding.GetEncoding(From).GetBytes(str);
bs = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding(From), System.Text.Encoding.GetEncoding(To), bs);
string res = System.Text.Encoding.GetEncoding(To).GetString(bs);
return res; }
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 最新版本:20070212http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
代码读取有问题!
{
string a = "中华■人民共3和国2●"; //这里的■32●是全角字符 也未出现错误
Response.Write(ConertStr(a, "utf-8", "gb2312"));
Response.Write("<br>");
Response.Write(ConertStr(a, "gb2312", "utf-8")); } string ConertStr(string str, string From, string To)
{ byte[] bs = System.Text.Encoding.GetEncoding(From).GetBytes(str);
bs = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding(From), System.Text.Encoding.GetEncoding(To), bs);
string res = System.Text.Encoding.GetEncoding(To).GetString(bs);
return res; }
ConvertStr(str, "GB2312", "UTF-8")
这个调用先把str用GB2312解码成一个byte[],
然后把这个本应该是GB2312的byte[]强制使用UTF-8编码成字符串,结果就是一个乱码子串(你可以打印出来看一下)。
之所以客户显示有时候正常,是因为UpdatePanel内部又把它按UTF-8解析输出,然后的结果如果按GB2312显示的话和原先的恰好一样。原字符串 ---> gb2312 byte[] ---> utf-8 编码 (乱码) --> UpdatePanel uft-8解码输出 --> IE按gb2312显示这个方案的问题是Gb2312和utf-8不兼容,gb2312 byte[]不能完全用utf-8编码,有些字节会被丢弃。不用javascript的话没有好的解决方法。我想得到的方法是把output用BASE64编码,输出到client,然后javascript解码并且输出。
using System.Collections.Generic;using System.Text;namespace EncodingTest
{
class Program
{
public static string Convert(string str, string From, string To)
{
return Encoding.GetEncoding(To).GetString(Encoding.GetEncoding(From).GetBytes(str));
} public static string Output(string str)
{
StringBuilder sb = new StringBuilder();
foreach (char c in str)
{
sb.AppendFormat("{0:X} ", (int)c);
}
return sb.ToString();
} static void Main(string[] args)
{
string str = "什么啊";
string cov1 = Convert(str, "GB2312", "UTF-8");
string cov2 = Convert(cov1, "UTF-8", "GB2312");
Console.WriteLine("{0}\t=\t{1}", str, Output(str));
Console.WriteLine("{0}\t=\t{1}", cov2, Output(cov2));
}
}
}