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

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

下面解决最经典的乱码问题: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)、前端显示汉字,如“锟金考烫烫烫”等,这表示浏览器解码错误

Servlet乱码问题的更多相关文章

  1. servlet乱码问题总结

    在学习时servlet乱码问题还是挺严重的,总结一下有三种情况 1.新建HTML页面后浏览出现乱码 2.以post形式请求时出现乱码 3.以get形式请求时出现乱码 让我们一个一个来解决吧 1.新建H ...

  2. MyEclipse +Servlet 乱码

    用MyEclipse 新建了Web Project,然后建立了一个Servlet,在doGet方法中谢了简单的一句欢迎语句,本来以为平平常常的事情,但是却出错了,乱码问题,在网上找了一些帖子,说是设置 ...

  3. servlet 乱码解决方法

    一. servlet 发送的html 页面中文乱码 解决方法, 1.加入如下代码 response.setCharacterEncoding("UTF-8"); 2.在html页面 ...

  4. tomcat8 到idea控制台和servlet乱码问题

    作者:晨钟暮鼓c个人微信公众号:程序猿的月光宝盒 1.问题重现 ​ Tomcat8 部署到idea上时候,控制台出现的乱码 如图,本来框出来的是乱码 其中,"测试"这个是在serv ...

  5. Servlet乱码问题解决

    对于请求参数的编码处理基本上分为get和post两种情况. 1.POST index.html <!DOCTYPE html> <head> <meta http-equ ...

  6. Servlet乱码

      request.setCharacterEncoding():是设置从request中取得的值或从数据库中取出的值 (只管post方式提交的问题///get需在server.xml中的: < ...

  7. servlet乱码以及解决

    //  浏览器提交的数据是000110011(码表中对应的<编码> )等东西. // 浏览器以什么<码表>打开浏览器(而空中浏览器使用的编码是:<meta http-eq ...

  8. 解决servlet乱码问题

    1) request中的中文乱码 a) POST方式提交 在获得提交表单信息之前调用request.setCharactersEncoding("UTF-8"); b) GET方式 ...

  9. Servlet乱码解决

    后端收前端 1.post乱码 可以通过 request.setCharacterEncoding("utf-8");  这样在后端可以接收中文 2.get乱码(手动解决) 可以通过 ...

随机推荐

  1. Asp.net FileUpload+Image制作头像效果

    在Web开发中会经常使用到个人信息注册,而个人信息中通常需要自己的头像或者照片.今天主要介绍一下使用FileUpload+img控件上传照片. FileUpLoad控件使用介绍 FileUpLoad控 ...

  2. cesiumjs学习笔记之三——cesium-navigation插件 【转】

    http://blog.csdn.net/Prepared/article/details/68940997?locationNum=10&fps=1 插件源码地址:https://githu ...

  3. 如何在脚本中执行SQL语句并获得结果输出?

    这里需要用到的工具叫做sqlcmd.exe, 它随SQL server的安装而安装. 该可执行程序的位置在: C:\Program Files\Microsoft SQL Server\xxx\Too ...

  4. SoundPool 音频播放 API 详解【示例】

    demo地址:https://github.com/baiqiantao/PermissionTest.git 一个大坑:SoundPool最多只能播放时长10s左右.大小70kb左右(这些值是我多次 ...

  5. myeclipse创建maven android项目

    一.搭建环境 1.安装android maven插件,我在网上找了半天.没有找到这个插件,于是选择了在线安装.选择myeclipse 的 [help]->[install form catalo ...

  6. 装上了Fedora19

    超期服役的Aspire黑机器在一个下午主动退役了,为了填补它留下的空白,趁JD减价入手了一台宏碁(acer) SQX4610 120N,就为了玩Linux. 这机器用光驱启动有些特殊,需要在启动时不断 ...

  7. Office PPT如何切换到返回幻灯片

    1 如图所示,有"老师""同学""家人"三个板块,如果依次播放,将播放"老师1" "老师2" &qu ...

  8. Linux/Unix分配进程ID的方法以及源代码实现

    在Linux/Unix系统中.每一个进程都有一个非负整型表示的唯一进程ID.尽管是唯一的.可是进程的ID能够重用.当一个进程终止后,其进程ID就能够再次使用了. 大多数Linux/Unix系统採用延迟 ...

  9. 2.6.33中关于at91sam9260的i2c controller驱动的问题

    在为at91sam9260移植2.6.33内核的I2C时,直接用driver/bus/i2c-at91.c这个iic的adapter驱动是不能用的,而且在makemenuconfig时,在device ...

  10. UISlider设置按钮透明

    UISlider *aslider = [[UISlider alloc]initWithFrame:kCR(, , , )]; [aslider setValue:0.5]; [aslider se ...