zoukankan      html  css  js  c++  java
  • 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)、前端显示汉字,如“锟金考烫烫烫”等,这表示浏览器解码错误

  • 相关阅读:
    调用外部的EXE和载入关卡
    射击游戏
    一些有用的函数
    U3D支持中文
    摄像机淡入淡出的例子
    一些编辑器开发的代码范例
    自动补全插件之二
    Dapper扩展Refactored Dapper Extensions
    抽象类
    jQuery AutoComplete 实现中文的自动补全
  • 原文地址:https://www.cnblogs.com/weiyinfu/p/7385091.html
Copyright © 2011-2022 走看看