js UTF傳中文參數到GBK之所以不行是因為其字符長度不同個中文在UTF中為個字符而GBK為個字符所以導致encodeURL後不同編碼內容不一致
要轉換編碼怎麼都離不開服務器所以最佳辦法是做一個中轉頁面你可以提示“正在跳轉到xxx”但是這個頁面的實質是處理中文參數問題通過js用URl傳參到中轉頁面中轉頁面再通過$_GET來判斷是否有參數有則用iconv轉換編碼然後再組合轉換好的URL參數跳轉到GBK頁面
下面是作者的一個簡單的中轉業供不懂的同學參考
代碼如下
<!DOCTYPE html>
<html xmlns=“:lang=“zh
CN” lang=“zh
CN”>
<head>
<meta http
equiv=“Content
Type” content=“text/html; charset=gbk” />
</head>
<body>
<h
>正在跳轉到相應服務器……
</h
>
<?php
$url = array(
‘tmall’ => ‘
’
buy’=> ‘
);
if( $_GET[
url
] == ” && $_GET[
q
] == ” )
echo ‘<script>alert(“參數有誤
點確定後將自動跳轉回首頁”);window
location
href=“http://’
$_SERVER[
HTTP_HOST
]
’”</script>’;
else
{
echo ‘<script>window
location
href=“‘
$url[$_GET[
url
]]
iconv(‘UTF
′
’GBK’
$_GET[
q
])
’”</script>’;
}
?>
</body>
</html>
UTF頁面引用外部編碼為GBK的JS文件編碼的處理
比如對於QQ的IP返回城市的接口的js我們使用下面的代碼可是在UTF頁面中正常的顯示GBK編碼的js
代碼如下
<script type=”text/javascript” src=”
這樣子我就成功的解決了在UTF頁面中引入編碼為GBK的JavaScript文件亂碼問題了而且不需要額外的寫函數處理GBK轉UTF編碼同樣對於GBK頁面引用編碼為UTF編碼的JavaScript文件如果出現亂碼問題可以使用下面的代碼來解決
代碼如下
<script type=”text/javascript” src=”testjs” charset=”utf″></script>
此方法是對於在js文件中出現漢字中文以及其他容易造成在GBK與UTF編碼錯誤字符的時候使用對於純英文的就不需要了如果為了保險加上也無妨~
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19994.html