表单从gb2312的页面提交到utf-8页面,或者表单从utf-8的页面提交到gb2312页面的解决办法
·在不同编码的页面之间提交表单 ,可使用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" onsubmit="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 onsubmit="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)
posted on 2012-01-17 09:51 little jerry 阅读(2038) 评论(0) 编辑 收藏 举报