45IT.COM- 电脑学习从此开始!
DIY硬件教程攒机经验装机配置
设计Photoshop网页设计特效
系统注册表DOS系统命令其它
存储主板显卡外设键鼠内存
维修显卡CPU内存打印机
WinXPVistaWin7unix/linux
CPU光驱电源/散热显示器其它
修技主板硬盘键鼠显示器光驱
办公ExcelWordPowerPointWPS
编程数据库CSS脚本PHP
网络局域网QQ服务器
软件网络系统图像安全
页面导航: 首页 > 设计学院 > 网络编程 > javascript >

解决js UTF-8传参到GBK页面乱码问题

电脑软硬件应用网 45IT.COM 时间:2013-07-14 12:34 作者:佚名

js UTF-8传中文参数到GBK,之所以不行是因为其字符长度不同,1个中文在UTF-8中为3个字符,而GBK为2个字符,所以导致encodeURL后不同编码内容不一致。
 

要转换编码,怎么都离不开服务器,所以最佳办法是做一个中转页面,你可以提示“正在跳转到xxx”,但是这个页面的实质是处理中文参数问题,通过js,用URl传参到中转页面,中转页面再通过$_GET来判断是否有参数,有则用iconv转换编码,然后再组合转换好的URL参数,跳转到GBK页面。
 

下面是作者的一个简单的中转业,供不懂的同学参考

 代码如下  
<!DOCTYPE html>  
<html xmlns=“http://www.w3.org/1999/xhtml” xml:lang=“zh-CN” lang=“zh-CN”>  
<head>  
<meta http-equiv=“Content-Type” content=“text/html; charset=gbk” />  
</head>  
<body>  
<h1>正在跳转到相应服务器……..</h1>  
 
<?php  
$url = array(  
    ‘tmall’ => ‘http://s8.taobao.com/search?commend=all&style=grid&pid=mm_11039324_2536738_9491366&mode=66&viewIndex=10&user_type=1&q=’,  
    ’360buy’=> ‘http://search.360buy.com/Search?utm_source=show.union.360buy.com&utm_medium=tuiguang&utm_campaign=t_19195_&keyword=’,  
);  
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-8′,’GBK’,$_GET['q']),’”</script>’;  
}  
 
?>  
 
</body>  
</html>  


UTF-8页面引用外部编码为GBK的JS文件编码的处理

比如对于QQ的IP返回城市的接口的js我们使用下面的代码,可是在UTF-8页面中正常的显示GBK编码的js

 代码如下  

<script type=”text/javascript” src=”http://fw.qq.com/ipaddres” charset=”gb2312″></script>

这样子我就成功的解决了在UTF-8页面中引入编码为GBK的JavaScript文件乱码问题了。而且不需要额外的写函数处理GBK转UTF-8编码,同样对于GBK页面引用编码为UTF-8编码的JavaScript文件如果出现乱码问题,可以使用下面的代码来解决

 代码如下  

<script type=”text/javascript” src=”test.js” charset=”utf-8″></script>

此方法是对于在js文件中出现汉字中文,以及其他容易造成在GBK与UTF-8编码错误字符的时候使用,对于纯英文的就不需要了。如果为了保险,加上也无妨~

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
无法在这个位置找到: baidushare.htm
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
推荐知识