V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hellogbk
V2EX  ›  程序员

java + tomcat, 为什么不乱码呢。

  •  
  •   hellogbk · 2015-01-17 13:33:26 +08:00 · 2524 次点击
    这是一个创建于 3597 天前的主题,其中的信息可能已经有所发展或是发生改变。
    win7 + tomcat7, 浏览器用的chrome
    在js里用jquery ajax post一个name参数到servlet,name参数值为中文,
    tomcat没做任何编码配置,程序中没有做编码转换, jsp与js是utf-8, 这样接到的那个name值却不是乱码的, 这是为什么。。。。
    tomcat 不是默认编码iso-8859-1么? jquery会自动对提交的参数进行encodeURIComponent,是utf8编码,为什么没有造成乱码?

    想不明白啊。。
    6 条回复    2015-01-17 19:00:48 +08:00
    hellogbk
        1
    hellogbk  
    OP
       2015-01-17 13:36:48 +08:00
    蛋疼, 刚问完我就貌似找到答案了。。。
    hellojinjie
        2
    hellojinjie  
       2015-01-17 14:06:14 +08:00
    如果是 get 的话,应该会乱码
    zhangchioulin
        3
    zhangchioulin  
       2015-01-17 15:22:54 +08:00 via iPhone
    有没有输入改编吗的代码?
    hellogbk
        4
    hellogbk  
    OP
       2015-01-17 16:06:27 +08:00
    @hellojinjie 是post
    hellogbk
        5
    hellogbk  
    OP
       2015-01-17 16:08:07 +08:00   ❤️ 1
    @zhangchioulin 没有, 查到一篇资料里面说, 如果请求头里面设置了contenttype而且contenttype里面有charset的话, tomcat会取到这个charset,用这个charset来解码参数,而不是用默认的iso8859了。。

    jquery的ajax方法会自动添加
    content-type=application/x-www-form-urlencoded;charset=utf-8
    这个请求头,所以就没有造成乱码。。
    lujiajing1126
        6
    lujiajing1126  
       2015-01-17 19:00:48 +08:00   ❤️ 1
    apache的HTTP組件默認編碼是ISO-8859-1,但是他會從Headers拿Content-Type
    我記得應該包名是org.apache.http吧
    可以參考一下Google的Volley框架的response解析
    作爲HTTP服務器肯定是完整實現Http協議的啦不用擔心
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1038 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 19:27 · PVG 03:27 · LAX 11:27 · JFK 14:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.