ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

表单从gb2312的页面提交到utf-8页面,或者表单从utf-8的页面提交到gb2312页面的解决办法...

2019-08-07 09:08:33  阅读:263  来源: 互联网

标签:gb2312 utf Mid 表单 str 页面


原文链接:http://www.cnblogs.com/littlejerry/archive/2012/01/17/2324321.html

·在不同编码的页面之间提交表单 ,可使用accept-charset属性,此属性FF支持,但是IE不支持
--------------------------------------------------------------------
1. 表单从gb2312的页面提交到utf-8页面时。即
   ·<form method="post" action="2.php" accept-charset="utf-8">
   ·accept-charset属性FF识别,但是ie不识别,因此采用
   ·<form method="post" action="2.php" accept-charset="utf-8" οnsubmit="document.charset='utf-8';">

   ·当提交后,直接后退到表单提交页,form页面会编程乱码。,此时需要在gb2312页面中head结束之前添加
     <script>
         if(document.charset!="gb2312" && navigator.userAgent.indexOf("MSIE")>0){
            window.location.reload();
         }
    </script>
---------------------------------------------------------------------

2. 从 UTF8 编码页面 Post 数据到 GB2312 页面乱码问题解决方法
    问题描述:如包含中文,则接收的数据会发生乱码
    解决方法:
          FF中,支持accept-charset属性
            <form method="post" action="2.php" accept-charset="gb2312">
          IE中,采用js(小强)--gbk将中文编译,在utf-8中解
           ·gb2312文件--escape,js编码函数
      <script type="text/javascript">
                        function chkform(f)
                        {
                       f.uname.value=escape(f.uname.value);
                       return true;
                         }
                  </script>

     <form  οnsubmit="return chkform(this);"  action="insert.asp" method="post" >
     ------------------------------------------------------------
          ·utf-8文件,接收.asp函数,解码escape
 Function vbsUnEscape(str)
    dim i,s,c
    s=""
    For i=1 to Len(str)
        c=Mid(str,i,1)
        If Mid(str,i,2)="%u" and i<=Len(str)-5 Then
            If IsNumeric("&H" & Mid(str,i+2,4)) Then
                s = s & CHRW(CInt("&H" & Mid(str,i+2,4)))
                i = i+5
            Else
                s = s & c
            End If
        ElseIf c="%" and i<=Len(str)-2 Then
            If IsNumeric("&H" & Mid(str,i+1,2)) Then
                s = s & CHRW(CInt("&H" & Mid(str,i+1,2)))
                i = i+2
            Else
                s = s & c
            End If
        Else
            s = s & c
        End If
    Next
    vbsUnEscape = s
End Function

uname=vbsUnEscape(uname)
 

转载于:https://www.cnblogs.com/littlejerry/archive/2012/01/17/2324321.html

标签:gb2312,utf,Mid,表单,str,页面
来源: https://blog.csdn.net/weixin_30865427/article/details/98716451

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有