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 ?> </body> |
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编码错误字符的时候使用,对于纯英文的就不需要了。如果为了保险,加上也无妨~