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

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

时间: 2024-07-29 01:35:53

解决js UTF-8传参到GBK页面乱码问题的相关文章

Action传参给Jsp页面问题

问题描述 Action传参给Jsp页面内容为beanPage里面有listallRow等属性使用<s:properyvalue="beanPage.list">不显示东西在前面加<s:debug/>后取值成功求解 解决方案 解决方案二:<s:properyvalue="beanPage.list">value="#beanPage.list格式有问题解决方案三:不用加beanPage的吧,取的是值栈里面的值解决方案四:二

配置Tomcat解决URL传参引出的中文乱码问题

                         今天在写一个JSP页面时候,发现下面报错: <span style="font-size:18px;"> <a href="request.jsp?username=小七七">测试URL传参</a></span>     通常情况下,通过使用contentType和下面的就可以解决传参过程中的中文乱码问题,但是貌似URL传参还要设备别的东西. <% request

jsp传参 servlet接收中文乱码问题的解决方法_JSP编程

在公司实习了8个月,一直都是做android和h5的,但是发现做程序连一点服务都不会该怎么办,所以最近开始学起了java,不知道是不是因为框架学多了,现在看起springmvc框架比以前看起来简单太多了,这里我是准备从hibernate开始学习,毕竟数据是根本嘛,首先我用的是hibernate+servlet,但是在jsp页面传参到servlet的时候中文一直乱码,我尝试了好多方法,最后还是解决了. 第一,首先看清项目的编码,jsp页面的编码 第二,修改tomcat 下面的server.xml文

js onclick事件传参讲解_javascript技巧

1.在页面中给方法传参数有两种方法 第一:onclick=cancel(id,patientId); 在js文件中定义cancel方法 如果要把当前对象传过去用onclick="cancel(this,id,patientId)" js中cancel(obj,id,patientId) 第二:在js中用jquery$(function(){ var patientId=$("a").attr("patientId"); }),在页面中<tr

ExtJS按钮传参到JSP页面中默认执行JS函数

问题描述 ExtJS 界面有一个打印按钮,点击打印按钮传个参数param1到JSP页面中,然后在执行一个fn函数,执行打印过程,这块应该如何写呢,请大家给个思路 解决方案 点击buttion handler事件, 然后到action, 通过action返回到jsp页面, 在jsp页面可以执行其他的fn函数 ,然后window.print()即可

js eval()执行传参函数的写法

.cs public class Message<T> { // 数据总数 public int? Total { get; set; } // 关键数据 public List<T> Rows { get; set; } // 信息状态 // 0:失败,1:成功, 2:其它 public int? Status { get; set; } // 返回信息 public string Msg { get; set; } //js前台执行方法 public string JsExec

|zyciis| ASP.NET中 我有A页面要传参到B页面,但这里不允许用URL传参 那有什么办法呢 谢谢

问题描述 1:Cokies这个不稳定2:Session这个占资源3:Appliction公共的这个这里不能用4:URL这个是最好的,但我这里不允许用这个不能在URL中出现参数大家有什么其他办法谢谢 解决方案 解决方案二:formpost解决方案三:formpost解决方案四:<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-tra

js实现页面a向页面b传参的方法_javascript技巧

本文为大家分享了js实现页面a向页面b传参的具体方法,供大家参考,具体内容如下 方法一:使用HTML5本地化存储(localStorage) 组件(本地最大能存储5M数据)localStorage是本地永久存储数据,是cookie的优化 方法二:使用cookie将数据存放在客户的浏览器 (最大存储2M数据) 方法三:使用url传参 (将要传递的数据保存为一个存储变量,然后传给url)方法如下; a.html var app = {}; app.list = '123' app.test = '1

jsp中文页面乱码与传参乱码

  页面乱码 这种乱码的原因是应为没有在页面里指定使用的字符集编码,解决方法:只要在页面开始地方用下面代码指定字符集编码即可 代码如下   <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="err.jsp" %> 数据库乱码 这种乱码会使你插入数据库的中文变成乱码,或者读出显