android gb2312 utf-8,不同编码页面之间用form传值出现乱码问题解决方案 utf-8 到 gb2312...
相信有人也曾遇到過這種問題,今天將這個問題稍作整理發布出來。
由于編碼的問題傳值出現亂碼,一看到這樣的情況,我們首先想到的是線面的兩種解決辦法:
方案一:在接收參數頁面進行轉碼? (這是較為理想的解決辦法)
方案二:改變提交頁面的編碼方式
以上解決辦法,如果讓我選擇,那當然選擇方案一了。可是我是一名頁面制作人員,無法處理開發的程序,所以再來看方案二。
該列表頁以及詳細頁面均會提交數據,看了這么多的頁面,再想 有可能別的地方還會遇到不同編碼傳遞數據的問題,所以很顯然 方案二并不是很理想。
有沒有一種辦法是在提交數據之前將內容轉碼后再提交呢?這樣既不用通過開發調整接收端程序,也不用改變頁面原有的編碼。
有了這種念頭,自然想到用JS來實現。
太美好了!在JS中所提供的document.charset可以做到這一點,不過這個方法只局限于IE使用,要兼容Firefox及其他瀏覽器需要用到另外一種方法 form.acceptCharset (該方法屬性由王昊提供)
以上兩種方法在使用中必須注意,charset方法使用document就可以,不過acceptCharset必須指定到該form才可以正常使用。
以下是實際應用的代碼:(將代碼保存為html格式即可預覽)
function CheckPD(theForm)
{
var name1 = theForm.name1.value;
if (name1 == “”)
{
alert(“請輸入您的姓名!”);
theForm.name1.value=”";
theForm.name1.focus();
return false;
}
if (theForm.name1.value.length < 2 || theForm.name1.value.length>4)
{
alert(“錯誤:名字應在2-4個字之間!”);
theForm.name1.focus();
return (false);
}
if (name1.search(/[`1234567890-=\~!@#$%^&*()_+|<>;':",.?/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]/) != -1)
{
alert(“請務必輸入簡體漢字!”);
theForm.name1.value = “”;
theForm.name1.focus();
return false;
}
var name2 = theForm.name2.value;
if (name2 == “”)
{
alert(“請輸入您愛人的名字!”);
theForm.name2.value=”";
theForm.name2.focus();
return false;
}
if (theForm.name2.value.length < 2 || theForm.name2.value.length>4)
{
alert(“錯誤:名字應在2-4個字之間!”);
theForm.name2.focus();
return (false);
}
if (name2.search(/[`1234567890-=\~!@#$%^&*()_+|<>;':",.?/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]/) != -1)
{
alert(“請務必輸入簡體漢字!”);
theForm.name2.value = “”;
theForm.name2.focus();
return false;
}
setTimeout(function(){document.charset=’UTF-8′;document.form2.acceptCharset=’UTF-8′},1);
}
//–>
姓名:單姓復姓男女姓名:單姓復姓男女以上案例中要注意 form 的onSubmit執行了我之前講到的兩種方法,可是在IE下面所執行的是document.charset 該方法是全局性的,所以改變了整個頁面的編碼格式,由于UTF-8和gb2312兩者對字符的默認解釋不通,所以整個頁面會出現意想不到的變化。這個時候 我們在CheckPD()函數中加了最后一句 setTimeout 這個方法,讓其在1毫秒之后又改變回原來的編碼格式。這樣做之后在提交表單時真個頁面給人的感覺是小閃一下(這是目前存在的BUG還未解決)
OK! 到目前為止上面這段代碼已經可以在市場上的主流瀏覽器中正常使用了。
以上方法如果您覺得不完美,或者您有更好的解決辦法請回復描述一下您的方法,讓我們共同進步。
總結
以上是生活随笔為你收集整理的android gb2312 utf-8,不同编码页面之间用form传值出现乱码问题解决方案 utf-8 到 gb2312...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java简历下载_java个人简历模板下
- 下一篇: 地产行业信息化建设思考