返回列表 发帖

Windows下不会乱码, 但一布署到Linux下就会乱码

昨天就遇到了一个问题, 在windows下测试通过, 没有问题, 但是一布署到Linux下, 问题就来了, 一个普通的text修改, 两个操作系统下的结果完全不同, 找了N久, 终于知道问题的所在, 希望大家以后在遇到类似问题时也知道发生什么事.
以下是具体出问题的地方
页面有个URL: "/test/edit.do?method=setValue&name=" + name + "&pass=" + pass;
其中name和pass都是js从text中获取的, name会出现中文, 在windows完全正常, 但是在linux下就乱码了, 编码的是utf-8.

最后发现问题的所在, 直接把name和pass放在一个form中, 再用form传参取代URL, 问题解决.

地址传递好像在windows也会乱码吧。以前也遇见过一样的问题。
好像是get方法传参数没办法指定编码。而post传递是根据页面的编码来传递的。不知道是不是这样

TOP

在windows下用URL传参是没有乱码的, 在LINUX下用URL传参会引发这个问题, 但用form就可以保证不会出现这个问题了

TOP

所在在地址栏的URL里传递的参数都属于GET方式发送的请求参数。
如果这些请求参数包含非西欧字符,应该先对该CANSHU进行编码,
例如你们在google搜索将看到如下结果:
http://www.google.cn/search?hl=zh-CN&q=%E6%9D%8E%E5%88%9A+java&meta=&aq=0&oq=%E6%9D%8E%E5%88%9A+
其中=%E6%9D%8E%E5%88%9A字符串就是编码后的内容。
Java的java.net包下提供了URLEncoder和URLDecoder来进行这种编码和解码。
生命没有假期!
如果生命只剩下最后一秒,你可会想到我?

TOP

老师居然在线, 不用上课了啊

TOP

难怪我这边的页面的中文全都是编码过后的字符串。。。原来是为了防止乱码

TOP

中国程序员真的很惨

TOP

呵呵。加油。自己搞个中文编程语言出来!

TOP

对, 以后让英美的人考中文46级, 不准用笔, 只能用刀和竹子考甲骨文

TOP

让他们用毛笔就好了,用刀子的层次太低了

TOP

返回列表