ps:servlet的PrintWriter和ServletOutputStream是不能同时使用的,同时使用会抛异常;

PrintWriter是字符流.ServletOutputStream是字节流.字节流是万金油,所以这里说的是当使用字符流PrintWriter的时候;

如下代码:

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String data = "中国";
response.getWriter().write(data);
}

向浏览器输出中国两字;很愉快的发布之后,浏览器返回的是??.

是因为:

1; 当服务器去调用servlet的时候同时创建了一个resquest和一个response对象.resquest用来存储客户端发送请求,response用来存储服务器返回的数据;

2: 当Servlet拿着data去查它的默认码表,Sun公司显然是查国外的码表:ISO8859-1之类的...查完码表将它存储在response里,然后输出在浏览器里,浏览器的编码在中文的windows下一般是gbk或者gb2312.浏览器拿到ios编码的字符再查gbk的码表,显然就是乱码了.

解决:既然是Servlet里出的问题,那么就修改它的编码方式:

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String data = "中国";
response.setCharacterEncoding("UTF-8");//一般我们将字符编码设置成UTF-8.国际标准.
response.getWriter().write(data); }

这个时候部署上去看见三个字:涓浗,是因为我们的浏览器的编码是GBK(默认),所以我们要告知浏览器的编码方式(当然你也可以自己在浏览器里设置,不推荐:让用户自己去操作的都是不良好的用户体验;

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setHeader("Content-type", "text/html;charset=UTF-8");//告知浏览器编码方式;
String data = "中国";
response.setCharacterEncoding("UTF-8");
response.getWriter().write(data); }

这样我们就能看见"中国"啦~

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

  1. Java中关于Servlet中请求中文乱码及文件下载

    1,Servlet请求响应中文乱码问题 package com.demo.servlet; import java.io.PrintWriter; import java.io.IOException ...

  2. Servlet、MySQL中文乱码

    1.Servlet中文乱码: 在doPost或doGet方法里,加上以下两行即可: response.setContentType("text/html;charset=UTF-8" ...

  3. JSP/ Servlet常见的中文乱码原因

    在开发中,我们经常遇到中文乱码的问题,比方: &浏览器中看到的 Jsp/Servlet 页面中的汉字成了 '?' ?  &浏览器中看到的 Servlet 页面中的汉字都成了乱码  &a ...

  4. 在servlet中的中文乱码,相对路径和绝对路径

    默认情况下在servlet中的中文是显示不出来的,解决问题就是加resp.setContentType("text/html;charset=gbk"); 而且这句加的话必须写在P ...

  5. servlet中的中文乱码问题

    老师总会说道:学完这个知识点,我们来谈谈中文乱码问题. 乱码的问题总是无处不在,处理不好会给用户带极差的用户体验. 那么我们来记录一下servlet中的乱码问题吧! 1.服务器向客户端响应时出现的乱码 ...

  6. 【WEB】jsp向servlet传参中文乱码问题解决

    传参方式:POST.GET.link方式 servlet向jsp传中文参数msg if(username.equals("") || password.euqals("& ...

  7. Servlet中关于中文乱码

    一.客户端请求服务器的数据有乱码 1.get方式请求 ①修改tomcat/conf/server.xml,在<Connector> 标签中添加属性useBodyEncodingForURI ...

  8. Java 解决 servlet 接收参数中文乱码问题

    方法一: 接收到的参数进行如下操作[不建议]: String tmp = new String(type.getBytes("iso-8859-1"), "utf-8&q ...

  9. JSP和Servlet的中文乱码处理

    JSP和Servlet的中文乱码处理 前几天学习了JSP和Servlet中有关中文乱码的一些问题,写成了博客,今天进行更新一下.应该是可以解决日常的乱码问题了.现在作以下总结希望对需要的人有所帮助.我 ...

随机推荐

  1. cache写策略

    cache写策略 Write Through (完全写入) CPU向cache写入数据时,同时向memory也写一份,使cache和memory的数据保持一致.优点是简单,缺点是每次都要访问memor ...

  2. ios开发分类--NSDate+Helpers

    #import <Foundation/Foundation.h> @interface NSDate (Helpers) @end #import "Date.h" ...

  3. [AFN]AFNetworking错误总结

    1. 错误打印  code=-1016 filed: text/html 错误原因:AFN默认不能解析请求回来的text/html数据 解决办法: AFN3.0的请看这里 AFHTTPSessionM ...

  4. 271. Encode and Decode Strings

    题目: Design an algorithm to encode a list of strings to a string. The encoded string is then sent ove ...

  5. Echarts - js

    <script type="text/javascript"> var myChart; myChart = echarts.init(document.getElem ...

  6. 使用Windows Azure PowerShell远程管理Windows Azure虚拟机

    对于Windows Azure,如果你还在使用windowsazure.com门户来管理虚拟机,那就显得不怎么高上大了.Windows Azure PowerShell 是一个功能强大的脚本环境,可用 ...

  7. git checkout not discard changes

    1. checkout one branch, show status user@vbox:/mnt/tmp$ git checkout masterSwitched to branch 'maste ...

  8. SQL高性能查询优化语句

    1.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null可以在num上设置 ...

  9. iTunes获取下载的安装包

    打开iTunes, 偏好设置,选择高级,即可找到文件路径

  10. leetcode:Swap Nodes in Pairs

    Given a linked list, swap every two adjacent(相邻的) nodes and return its head. For example,Given 1-> ...