使用js将utf-8编码转换成bg2312编码 这个你试试看,不知行不行啊http://www.phpchina.cn/bbs/thread-39210-1-1.html 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 GB页这样接收<script language="JScript" runat="Server">function decodeURL(x) { return decodeURIComponent(x); }</script><%Dim paramparam = decodeURL(Server.URLEncode(Request.Form("param")))Response.Write param%> 多此一举,根本不用转换!HTML表单自动将提交的内容格式化为Unicode形如 %27%45%78 我要用js实现,是在html页面做,谢谢 js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent1、 传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。 例如:<script language="javascript">document.write('<a href="http://passport.baidu.com/?logout&aid=7&u='+encodeURIComponent("http://cang.baidu.com/bruce42")+'">退出</a>');</script>2、 进行url跳转时可以整体使用encodeURI例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21");3、 js使用数据时可以使用escape[Huoho.Com编辑] 例如:搜藏中history纪录。4、 escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。最多使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支持(form中的编码方式和当前页面编码方式相同)escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-ZencodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-ZencodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z encodeURI, encodeURIComponent 是 UTF-8 的escape 是 Unicode 的楼主如果一定要在客户端 编 GB2312常见有下面三个手段:1 利用 VBScript (限 IE)2 利用 Flash (限已装 FlashPlayer 插件)3 利用 Unicode-GBK 对照表 (较好)这三个百度一下可以找到很多再提供一个思路就是:用 iframe 包括一个 GB2312 页面提交时让 iframe 中GB页的表单代为提交 http://topic.csdn.net/u/20080920/17/95714b3f-1c11-4a70-b80a-6c0e04a40169.html 上面的方法我都试过了,还是不行,我是从一个网站提交到另一个网站,请求的页面是html页面utf-8编码的,接受处理请求的页面是asp页面gb2312编码的,escape方法我试过了,有没有解决的,谢谢,如果有遇到相同问题的,请写出详细的js转码,再次感谢! http://www.jb51.net/article/5466.htm,这个里面有一个方法解决了我的问题,但是这个数组太大了,严重影响了页面的加载速度,所以我想换个方法进行代码转换,谢谢大家了,有解决的请告诉我您的解决方法,如果能写出详细的方法更好,谢谢! http://www.jb51.net/article/5466.htm,这个里面有一个方法解决了我的问题,但是这个数组太大了,严重影响了页面的加载速度,所以我想换个方法进行代码转换,谢谢大家了,有解决的请告诉我您的解决方法,如果能写出详细的方法更好,谢谢! http://www.jb51.net/article/5466.htm上面用的就是对照表, 虽然加了大量的信息, 但兼容性还是比较好.----------------------下面是用 VBScript 的例子, 局限IEhttp://www.ialvin.cn/blog/article.asp?id=131还有个利用 Flash 的例子, 要求 Flash8+http://www.ialvin.cn/util/py.htm你还是用 http://www.jb51.net/article/5466.htm 这个吧! 嘿嘿,昨天不小心多点了几次,最后问题解决了却不让我回复了,只有等到今天回复了,我现在已经解决了,只需要调用下面这个方法就行了,代码量少了很多function gb2312(key){ var r = ""; for(var i=0;i<key.length;i++) { var t = key.charCodeAt(i); if(t>=0x4e00 || t==0x300A || t==0x300B) { try { execScript("ascCode=hex(asc(\""+key.charAt(i)+"\"))", "vbscript"); r += ascCode.replace(/(.{2})/g, "%$1"); } catch(e) {} } else{r += escape(key.charAt(i))} } return r;}这个方法来源与http://blog.csdn.net/wcfboy1/archive/2008/08/25/2825343.aspx还是要谢谢你们,我明天来结贴 另辟蹊径的思路:【假设你要由A(utf-8)提交请求给B(gb2312)】在A中暗含一个gb2312的<iframe>(称为C),需要提交请求前,先用js将有关数据赋值给C,再由C提交请求给B。A到C的过程是在内存中以UNICODE无需转换,C和B的编码是相同的所以无需转换。该方法适用于的任何编码的页面之间,且适用于各种主流浏览器,通用。楼主的function gb2312(key)只能在IE内核浏览器有效,对firefox,opera等无效,因为你是调用vbscript. 在firefox中是不能用,麻烦楼上能不能说 的清楚点,简单点的 需要写一个类用来转化编码问题,还有就是传递参数一定要用这个编码累package com.johe.util;import java.io.UnsupportedEncodingException;import sun.misc.BASE64Decoder;public class StringConvert { public static String changToGBK(String str){ String result=null; try { //String [] strArray=str.split("/"); boolean b=false; //for(int i=0;i<strArray.length;i++){ if(!str.matches("^[0-9a-zA-Z、.。?!……/\u4e00-\u9fa5]*$") ){ result= new String(str.getBytes("iso8859-1"),"gbk"); } else{ result=str; } //} } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return result; } public static void main(String [] args){ System.out.println(decodeBASE64(encodeBASE64(""))); } public static String encodeBASE64(String s) { if (s == null) return null; try { return (new sun.misc.BASE64Encoder()).encode( s.getBytes("gbk") ); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return s; } // 将 BASE64 编码的字符串 s 进行解码 public static String decodeBASE64(String s) { if (s == null) return null; BASE64Decoder decoder = new BASE64Decoder(); try { byte[] b = decoder.decodeBuffer(s); return new String(b); } catch (Exception e) { return null; } } }这个是一个把gb2312转化成GBk的;类 Extjs问题 求解答 感激不尽~ javascipt简单的注册验证 js 函数出错,请大家帮忙看下 js删除指定行!! 各位帮我看下代码 求一二级联动代码 在IE中如何实现打印功能不用打开页面而是根据某个条件存在直接打印出规定的页面格式? 一个代码解决所有IE兼容问题 js实现改变文本框的value 求助啊,急急急,大佬来救我 为何无法通过getElementsByName()获取对象? 关于漂浮广告的定位
function decodeURL(x) { return decodeURIComponent(x); }
</script>
<%Dim param
param = decodeURL(Server.URLEncode(Request.Form("param")))
Response.Write param%>
形如 %27%45%78
例如:搜藏中history纪录。4、 escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。
最多使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支持(form中的编码方式和当前页面编码方式相同)escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-ZencodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-ZencodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
escape 是 Unicode 的楼主如果一定要在客户端 编 GB2312
常见有下面三个手段:
1 利用 VBScript (限 IE)
2 利用 Flash (限已装 FlashPlayer 插件)
3 利用 Unicode-GBK 对照表 (较好)
这三个百度一下可以找到很多再提供一个思路就是:
用 iframe 包括一个 GB2312 页面
提交时让 iframe 中GB页的表单代为提交
上面用的就是对照表, 虽然加了大量的信息, 但兼容性还是比较好.
----------------------下面是用 VBScript 的例子, 局限IE
http://www.ialvin.cn/blog/article.asp?id=131还有个利用 Flash 的例子, 要求 Flash8+
http://www.ialvin.cn/util/py.htm你还是用 http://www.jb51.net/article/5466.htm 这个吧!
嘿嘿,昨天不小心多点了几次,最后问题解决了却不让我回复了,只有等到今天回复了,我现在已经解决了,只需要调用下面这个方法就行了,代码量少了很多
function gb2312(key)
{
var r = "";
for(var i=0;i<key.length;i++)
{
var t = key.charCodeAt(i);
if(t>=0x4e00 || t==0x300A || t==0x300B)
{
try
{
execScript("ascCode=hex(asc(\""+key.charAt(i)+"\"))", "vbscript"); r += ascCode.replace(/(.{2})/g, "%$1"); }
catch(e)
{}
}
else{r += escape(key.charAt(i))}
}
return r;
}
这个方法来源与http://blog.csdn.net/wcfboy1/archive/2008/08/25/2825343.aspx
还是要谢谢你们,我明天来结贴
在A中暗含一个gb2312的<iframe>(称为C),需要提交请求前,先用js将有关数据赋值给C,再由C提交请求给B。A到C的过程是在内存中以UNICODE无需转换,C和B的编码是相同的所以无需转换。该方法适用于的任何编码的页面之间,且适用于各种主流浏览器,通用。楼主的function gb2312(key)只能在IE内核浏览器有效,对firefox,opera等无效,因为你是调用vbscript.
package com.johe.util;import java.io.UnsupportedEncodingException;import sun.misc.BASE64Decoder;public class StringConvert {
public static String changToGBK(String str){
String result=null;
try {
//String [] strArray=str.split("/");
boolean b=false;
//for(int i=0;i<strArray.length;i++){
if(!str.matches("^[0-9a-zA-Z、.。?!……/\u4e00-\u9fa5]*$") ){
result= new String(str.getBytes("iso8859-1"),"gbk");
}
else{
result=str;
}
//}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
public static void main(String [] args){
System.out.println(decodeBASE64(encodeBASE64("")));
}
public static String encodeBASE64(String s) {
if (s == null) return null;
try {
return (new sun.misc.BASE64Encoder()).encode( s.getBytes("gbk") );
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return s;
}
// 将 BASE64 编码的字符串 s 进行解码
public static String decodeBASE64(String s) {
if (s == null) return null;
BASE64Decoder decoder = new BASE64Decoder();
try {
byte[] b = decoder.decodeBuffer(s);
return new String(b);
} catch (Exception e) {
return null;
}
} }这个是一个把gb2312转化成GBk的;类