Java 带中文的字符串asp utf 8转gb23122和asp.net 带中文的字符串asp utf 8转gb23122转码求一致的结果,大神们求助啊

gb2312到utf-8网站转码
1. 用mysql-front第三方工具转。
先转库,再转表,最后还要转列。
text字段转不了,转完数据乱码。要先把数据导成excel(无格式相当于),然后转表和字段,清空数据,把xls导入。
3.javabean不要用带preparestatement的,不然转码出错。
4. 导出文件要用OutputStreamWriter,原来有gb2312导出文件了要删除先。
OutputStreamWriter osw = new OutputStreamWriter(new
FileOutputStream(myFilePath, false),"UTF-8");
osw.write(strContent);把字符串strContent输出
osw.close();
5.& 导出js文件
var links="...."
var pic="...."
var text="..."
这三行间可以没有引号,但一定要换行,不然会js出错
所以导出脚本时要
OutputStreamWriter osw = new OutputStreamWriter(new
FileOutputStream(myFilePath, false),"UTF-8");
BufferedWriter bufw=new BufferedWriter(osw);
bufw.write(strContent1);
bufw.newLine();
bufw.flush();
bufw.write(strContent2);
bufw.newLine();
bufw.flush();
bufw.write(strContent3);
bufw.newLine();
bufw.flush();
bufw.close();
osw.close();&
转码后Tomcat要重启,缓存要清空。
6. 获取request数据默认编码是8859_1要转码
&%request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("UTF-8");
就可以直接request来用
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。url 传入汉字参数自动给我转码了 怎么办
[问题点数:20分,结帖人way5040]
本版专家分:327
CSDN今日推荐
本版专家分:136747
2014年10月 荣获微软MVP称号2013年10月 荣获微软MVP称号2012年10月 荣获微软MVP称号
2009年2月 .NET技术大版内专家分月排行榜第三
本版专家分:327
本版专家分:505777
年度总版至少三次排名前十即授予名人勋章
2012年 总版技术专家分年内排行榜第一2007年 总版技术专家分年内排行榜第二2006年 总版技术专家分年内排行榜第二2004年 总版技术专家分年内排行榜第二
2005年 总版技术专家分年内排行榜第三2003年 总版技术专家分年内排行榜第三2002年 总版技术专家分年内排行榜第三
2011年 总版技术专家分年内排行榜第六2010年 总版技术专家分年内排行榜第八
本版专家分:327
匿名用户不能发表回复!|
CSDN今日推荐&nbsp>&nbsp
&nbsp>&nbsp
&nbsp>&nbsp
彻底解决ASP.NET MD5加密中文结果和ASP不一致的问题
摘要:当要进行MD5加密的字符串不含中文时,那么ASP.NET的加密结果和ASP是一致的:Response.Write(FormsAuthentication.HashPasswordForStoringInConfigFile(&www.mzwu.com&,&MD5&));//结果:D66E1FB5AA4C520D9EAFFB61Response.Write(MD5(&www.mzwu.com&,32))
当要进行MD5加密的字符串不含中文时,那么ASP.NET的加密结果和ASP是一致的:
Response.Write(FormsAuthentication.HashPasswordForStoringInConfigFile(&www.mzwu.com&, &MD5&));
//结果:D66E1FB5AA4C520D9EAFFB61
Response.Write(MD5(&www.mzwu.com&,32))
'结果:d66e1fb5aa4c520d9eaffb61
当要进行MD5加密的字符串含中文时,两者的加密结果就不一致了:
Response.Write(FormsAuthentication.HashPasswordForStoringInConfigFile(&木子屋&, &MD5&));
//结果:34D9CBDDFA3AF832E2D1DC
Response.Write(MD5(&木子屋&,32))
'结果:0a40a9ae7aae
我们知道,ASP.NET默认使用utf-8编码格式,而ASP使用的是gb2312编码格式,正是由于这编码格式不同,才导致了两者对中文加密结果的不同。下边我们看看怎么让ASP.NET的编码结果和ASP一样,那也就意味着要让ASP.NET采用gb2312编码格式,这点FormsAuthentication.HashPasswordForStoringInConfigFile()方法是办不到的,我们得使用System.Security.Cryptography.MD5CryptoServiceProvider对象的ComputeHash方法来进行加密:
MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider();
Response.Write(BitConverter.ToString(MD5.ComputeHash(Encoding.GetEncoding(&gb2312&).GetBytes(&木子屋&))).Replace(&-&, &&));
//结果:0A40A9AE7AAE
若要再使用utf-8加密也非常容易:
MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider();
Response.Write(BitConverter.ToString(MD5.ComputeHash(Encoding.GetEncoding(&utf-8&).GetBytes(&木子屋&))).Replace(&-&, &&));
//结果:34D9CBDDFA3AF832E2D1DC
问题似乎是比较完美的解决了,我们再来完善一下:当要加密的字符串是从其他页面传进来时,其他页面采用的编码格式可能是gb2312,可能是utf-8,还可能是其他的编码格式,怎么解决呢?你可能会觉得很简单啊,使用它先前的编码格式进行加密不就行了?实际测试中你会发现两个很严重的问题:
1. 我们无从知道参数传过来时是使用什么编码格式;
2. 如果两个页面使用的编码方式不一样,那么Request接收到的参数值会乱码,那就不要谈加密了;
问题1比较好解决,要求对方传参数的同时必须多加一个参数说明采用的编码格式,问题2的解决方法是不使用Request直接接收参数值,废话不多说了,看下边的函数:
/**//// &summary&
/// 对字符串进行MD5加密
/// &/summary&
/// &param name=&text&&要加密的字符串&/param&
/// &param name=&charset&&字符串编码格式&/param&
/// &example&str = MD5(&木子屋&,&gb2312&);&/example&
/// &returns&&/returns&
public string MD5(string text, string charset)
return (MD5(text, charset, false));
/**//// &summary&
/// 对字符串或参数值进行MD5加密
/// &/summary&
/// &param name=&text&&要加密的字符串或参数名称&/param&
/// &param name=&charset&&字符串编码格式&/param&
/// &param name=&isArg&&加密字符串类型 true:参数值 false:字符串&/param&
/// &returns&&/returns&
public string MD5(string text, string charset, bool isArg)
MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider();
if (isArg)
NameValueCollection Collect = HttpUtility.ParseQueryString(Request.Url.Query, Encoding.GetEncoding(charset));//使用Collect接收参数值
if (Collect[text] != null)
return BitConverter.ToString(MD5.ComputeHash(Encoding.GetEncoding(charset).GetBytes(Collect[text].ToString()))).Replace(&-&, &&);
return BitConverter.ToString(MD5.ComputeHash(Encoding.GetEncoding(charset).GetBytes(text))).Replace(&-&, &&);
return string.E
说明1:上边代码需要引入的命名空间
using System.T
using System.Web.S
using System.Security.C
using System.Collections.S
说明2:32位密文如何转化成16位?
16位密文是32位密文的9到24位字符。如:&0a40a9ae7aae&→&90da023ae7aa1777&
以上是的内容,更多
的内容,请您使用右上方搜索功能获取相关信息。
若你要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内给你回复。
云服务器 ECS
可弹性伸缩、安全稳定、简单易用
&40.8元/月起
预测未发生的攻击
&24元/月起
邮箱低至5折
推荐购买再奖现金,最高25%
&200元/3月起
你可能还喜欢
你可能感兴趣
阿里云教程中心为您免费提供
彻底解决ASP.NET MD5加密中文结果和ASP不一致的问题相关信息,包括
的信息,所有彻底解决ASP.NET MD5加密中文结果和ASP不一致的问题相关内容均不代表阿里云的意见!投稿删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内答复
售前咨询热线
支持与服务
资源和社区
关注阿里云
International求助,java代码怎么实现把html的编码格式从gb2312转换为UTF-8
[问题点数:40分,结帖人u]
本版专家分:0
结帖率 75%
CSDN今日推荐
本版专家分:0
结帖率 75%
本版专家分:122
本版专家分:764
本版专家分:1612
2016年3月 Java大版内专家分月排行榜第一2016年2月 Java大版内专家分月排行榜第一2015年11月 Java大版内专家分月排行榜第一2015年10月 Java大版内专家分月排行榜第一2014年8月 Java大版内专家分月排行榜第一2014年7月 Java大版内专家分月排行榜第一2014年5月 Java大版内专家分月排行榜第一
2016年1月 Java大版内专家分月排行榜第二2015年12月 Java大版内专家分月排行榜第二2015年8月 Java大版内专家分月排行榜第二2015年3月 Java大版内专家分月排行榜第二2015年1月 Java大版内专家分月排行榜第二2014年12月 Java大版内专家分月排行榜第二2014年11月 Java大版内专家分月排行榜第二2014年6月 Java大版内专家分月排行榜第二2014年4月 Java大版内专家分月排行榜第二2014年1月 Java大版内专家分月排行榜第二2013年11月 Java大版内专家分月排行榜第二
2015年9月 Java大版内专家分月排行榜第三2015年6月 Java大版内专家分月排行榜第三2015年5月 Java大版内专家分月排行榜第三2015年2月 Java大版内专家分月排行榜第三2014年3月 Java大版内专家分月排行榜第三2013年12月 Java大版内专家分月排行榜第三
本版专家分:327
2014年7月 Java大版内专家分月排行榜第三
本版专家分:233
本版专家分:36
本版专家分:1806
本版专家分:737
结帖率 97.14%
本版专家分:0
本版专家分:2
匿名用户不能发表回复!|
CSDN今日推荐& 公司网站前期的网页用了gb2312保存用户数据,而我负责的部分用的是utf8,今天恰好要获取前期录入的数据于是毫无悬念地出现乱码问题,经过一番网上的搜索还是找不到完整解决方法,折腾好一段时间终于通过下面的例子推出了问题的所在:
这样的一个业务,客服用gb2312编码后 提交服务器,服务器接收时出现乱码,用System.Web.HttpUtility.UrlDecode();解码 ,还是出现乱码,困老了我好长时间,终于在google上找到了解决办法。
解决方案:
HttpUtility.ParseQueryString(Request.Url.Query, System.Text.Encoding.GetEncoding("GB2312"))["message"];--其中message就是你接收的参数.
于是了解到UrlEncode是基于页面的编码方式,那么前期保存到的数据时基于gb2312来UrlEncode的,所以在utf8页面解码时要指定用gb2312的方式来解码。否则会默认使用页面的编码方式来解码,不乱码才怪呢。。。。。。
具体做法:
System.Web.HttpUtility.UrlDecode("需解码的GB2312编码字符串",Encoding.GetEncoding("gb2312"));
阅读(...) 评论()

我要回帖

更多关于 asp utf 8转gb2312 的文章

 

随机推荐