`
zhaomerry
  • 浏览: 25125 次
  • 性别: Icon_minigender_1
  • 来自: 济南
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

正确处理含有中文的url以便被php解析

阅读更多

最近有同事项目上出了个问题,协助解决了一下。

在java系统中(部署在AIX上)传递中文数据信息到RTX(部署在windows上)的cgi处理端,发现中文信息无法被正确识别。经过验证,发现是因为字符集的设置所致。因为采取的是显式传值的方式 ,即把信息写在url中,因为是跨操作系统,所以cgi(php做的)没有正确的解析请求的url中的中文。

解决方法:在java中初始化url类时,将url字符串中的中文进行编码,即encode一下,这样旧能正确传递了,在php那边也不用解码就能直接正确获得java编码后的中文。

其实,这个方法也有个不足,这里encode时没有指定字符集,即使用的是系统默认的字符集,这样就对操作系统具有倚赖性,假如AIX默认字符集被修改成一种windows不支持的,那么有可能无法传递数据,最稳妥的方法,个人认为还是两边都进行显式的字符集指定,即java编码时使用encode(str,charset)方法,而php解码时也指定解码的字符集,两边指定的字符集当然要一样,这里是因为php和java都是支持的url的标准编码规范,所以可以这样做。对于显式指定字符集的encode,也是jdk1.4之后被推荐使用的。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics