当前位置: 代码迷 >> 综合 >> javascript BASE64-客户端(js)加码-服务器端(c#)解码,URL传递“汉字参数”解决方法
  详细解决方案

javascript BASE64-客户端(js)加码-服务器端(c#)解码,URL传递“汉字参数”解决方法

热度:30   发布时间:2023-12-19 01:15:06.0
为什么需要对参数进行编码?相信有过开发的经验的广大程序员都知道,在Web中,若是直接在Url地址上传递参数值,若是中文,或者+等什么的就会出现乱码现象,若是数字或者英文的好象没有什么问题,简言之,传递过来的参数是需要进行编码的。
在这里,也许有人会说,为什么不直接用Server.UrlDecode和Server.UrlEncode这两个来进行编码和解码的操作呢?

的确,这两个服务器端对象很好使用,用起来也很方便,但是,若在客户端是HTML的Input,查询的时候页面是HTML或者其他的,反正不是.NET的,那这个对象还可以用吗?


我现在就遇到这样的问题,查询的东东放在页面,而且那个页面我根本不想让他是.aspx结尾的,哈,感觉HTML的挺不错,而且里面的控件也是用HTML对象的。

下面先来看两个函数,UTF16转UTF8和UTF8转Utf16的。
function  utf16to8(str)  {
    
var out, i, len, c;

    out 
= "";
    len 
= str.length;
    
for(i = 0; i < len; i++{
 c 
= str.charCodeAt(i);
 
if ((c >= 0x0001&& (c <= 0x007F)) {
     out 
+= str.charAt(i);
 }
 else if (c > 0x07FF{
     out 
+= String.fromCharCode(0xE0 | ((c >> 12& 0x0F));
     out 
+= String.fromCharCode(0x80 | ((c >>  6& 0x3F));
     out 
+= String.fromCharCode(0x80 | ((c >>  0& 0x3F));
 }
 else {
     out 
+= String.fromCharCode(0xC0 | ((c >>  6& 0x1F));
     out 
+= String.fromCharCode(0x80 | ((c >>  0& 0x3F));
 }

    }

    
return out;
}


function  utf8to16(str)  {
    
var out, i, len, c;
    
var char2, char3;

    out 
= "";
    len 
= str.length;
    i 
= 0;
    
while(i < len) {
 c 
= str.charCodeAt(i++);
 
switch(c >> 4)
 
{
   
case 0case 1case 2case 3case 4case 5case 6case 7:
     
// 0xxxxxxx
     out += str.charAt(i-1);
     
break;
   
case 12case 13:
     
// 110x xxxx   10xx xxxx
     char2 = str.charCodeAt(i++);
     out 
+= String.fromCharCode(((c & 0x1F<< 6| (char2 & 0x3F));
     
break;
   
case 14
  相关解决方案