发现一个有趣的中文乱码问题

先上代码

<head>
<script type="text/javascript">
function openWin(src){
alert(src);
window.open(src);
}
</script>
</head>

<body>
例子1:<a href="cn_show.jsp?cn=显示中文" >显示中文</a><br>
例子2:<a href="cn_show.jsp?cn=<%=URLEncoder.encode("显示中文","GBK") %>" >编码后显示中文</a><br>
例子3:<a href="javascript:openWin('cn_show.jsp?cn=显示中文');" >打开中文窗口</a><br>
例子4:<a href="#" onclick="openWin('cn_show.jsp?cn=<%=URLEncoder.encode("显示中文","GBK") %>');" >编码后打开中文窗口</a><br>
例子5:<a href="javascript:openWin('cn_show.jsp?cn=<%=URLEncoder.encode("显示中文","GBK") %>');" >编码后打开中文窗口-错误写法</a><br>
</body>


这是一个比较常见的中文编码测试代码,其中例子2和例子4在对中文经过编码后,都能正常传输。
唯独例子5,传递的参数是已经转过码的,但是在javascript 里会再次转码,导致参数传递失败。
例子4与例子5的区别只在于,例子4是通过onclick事件来实现函数调用的,例子5是通过href直接进行函数调用的。

至于产生这种情况的原因,尚未能够找出来,希望知道的人能够指点。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值