• Servlet乱码问题


    数据像水流一样从一个地方流向另一个地方。
    文本流是特殊的二进制流。
    既然提到乱码问题,那就必然是用错误的编码去解释二进制流。
    在传输过程中必然都是以二进制流传输的。
    所以,我们需要考虑的是:

    • 有几个数据流中转站
    • 每个中转站是编码时(将数据流发出时)出现问题,还是解码时(接受数据流时)出现问题
    • 乱码问题调试非常简单,从数据源头开始,逐个结点打印一下信息,立马就能定位错误

    下面解决最经典的乱码问题:Servlet读取数据库,然后resp.getWriter.print()到前端,出现乱码。
    结点很显然有三个:
    数据库(1)=>(2)web程序(3)=>(4)前端
    一共有4个位置可能会发生乱码。
    配置数据库时,要使用utf8编码:
    jdbc:mysql://weiyinfu.cn:3306/come?useUnicode=true&characterEncoding=UTF-8
    web程序进行编码时(对应3处),resp.setCharacterEncoding("utf8");
    前端进行解码时(对应4处),resp.setHeader("content-type","text/html;charset=UTF-8");

    实际上,Servlet也可以通过resp.getOutputStream()直接打印二进制流,这样跟resp.getWriter()+resp.setCharacterEncoding()效果是一模一样的。

    下面说几个症状:
    (1)、前端网页显示???,这表示前端彻底无法解码,多半是因为服务器端发过来时编码出错了
    (2)、前端显示汉字,如“锟金考烫烫烫”等,这表示浏览器解码错误

  • 相关阅读:
    Android 3D滑动菜单完全解析,实现推拉门式的立体特效
    2013年9月25日参加耐特菲姆(北京)玉米滴灌培训小结
    日积月累:ProguardGui进行jar包代码混淆
    CSS3之渐变Gradient
    poj 3182 The Grove
    qrcodeJS生成二维码
    样式优先级
    git流程及操作
    js data日期初始化的5种方法 [转]
    转 jQuery中的$.extend方法来扩展JSON对象
  • 原文地址:https://www.cnblogs.com/weiyinfu/p/7385091.html
Copyright © 2020-2023  润新知