Servlet响应的中文字符集问题
在Servlet中利用response向客户端浏览器输出中文时有时会遇到乱码问题,总结如下:
response输出流有两种,一是以字节流输出,一是以字符流输出。
一、以字节流输出:
1.默认编码输出木有乱码
2.通过response的setHeader方法设置编码utf-8,无乱码
3.通过response的setContentType方法设置编码utf-8,无乱码
4.输出数字建议以字符串形式输出
二、以字符流输出:
1.默认查iso-8859-1码表(SUN的Servlet规范要求的) ,客户端显示乱码
2.通过response的setHeader方法设置编码utf-8,无乱码
3.通过response的setContentType方法设置编码utf-8,无乱码
字节流以默认编码输出:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 以字节流用默认编码向客户端输出中文数据,木有乱码
response.setContentType("text/html"); String str = "喔呵呵呵呵";
OutputStream out = response.getOutputStream();
out.write("</br></br><div align=\"center\" style=\"font-size:25px; color:red\">".getBytes()); out.write(str.getBytes()); out.write("</div>".getBytes());
out.close();
}
字节流设置编码为utf-8输出:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { // 通知客户端查UTF-8码表
response.setContentType("text/html;charset=utf-8"); // 或者:
// response.setHeader("Content-Type","text/html;charset=utf-8"); String str = "喔哈哈哈哈";
OutputStream out = response.getOutputStream();
out.write("</br></br><div align=\"center\" style=\"font-size:25px; color:red\">".getBytes()); out.write(str.getBytes("utf-8")); out.write("</div>".getBytes());
out.close();
}
字节流输出数字:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setHeader("Content-Type", "text/html;charset=utf-8"); int i = 98;
OutputStream out = response.getOutputStream(); out.write("</br></br><div align=\"center\" style=\"font-size:25px; color:red\">"
.getBytes()); // out.write(i); 会输出字母b // 输出数字98
out.write((i + "").getBytes()); out.write("</div>".getBytes());
out.close();
}
字符流设置编码为utf-8输出:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 通知客户端查UTF-8码表
response.setContentType("text/html;charset=utf-8");
// 或者:
// response.setHeader("Content-Type", "text/html;charset=utf-8"); String str = "喔嘿嘿嘿嘿";
PrintWriter out = response.getWriter();
out.write("</br></br><div align=\"center\" style=\"font-size:25px; color:red\">"); out.write(str); out.write("</div>");
out.flush();
out.close();
}
Servlet响应的中文字符集问题的更多相关文章
- Java中关于Servlet中请求中文乱码及文件下载
1,Servlet请求响应中文乱码问题 package com.demo.servlet; import java.io.PrintWriter; import java.io.IOException ...
- 解决servlet响应乱码问题
当我们使用servlet响应中文时,浏览器接收的内容就会乱码显示出来,原因是响应数据时使用的是utt-8编码,而浏览器解析响应用的的编码却不是utf-8,这样就会造成乱码. 解决办法: respons ...
- 使linux服务器默认使用中文字符集zh_CN.UTF-8
一.问题描述和相关概念 linux服务器的字符集设置可能影响到网站页面出现 “???” 等问号乱码,还有可能导致文件中的汉字部分出现乱码. locales设置:语言设置选项 linux真的是一个非 ...
- Ubuntu下设置中文字符集支持(解决中文乱码问题)
一. Ubuntu默认的中文字符编码 Ubuntu默认的中文字符编码为zh_CN.UTF-8,这个可以在/etc/environment中看到: sudo gedit /etc/environment ...
- 各种编码中汉字所占字节数;中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030
vim settings set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936,latin1set termencoding=utf-8se ...
- 中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030
中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030 内容详见: http://www.360doc.com/content/11/1004/12/6139921_1 ...
- 用Delphi的TIdHttp控件发起POST请求和Java的Servlet响应
http://blog.csdn.net/panjunbiao/article/details/8615880 用Delphi的TIdHttp控件发起POST请求和Java的Servlet响应
- 中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030
中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030 cp936是微软自己发布的用在文件系统中的编码方式.而bg2312是中国国家标准.我明白mount -t vfa ...
- 解决 Docker Image的UTF-8中文字符集的问题(以Oracle为例)
最近因业务需要,需要搭建一个Oracle数据库,当然Oracle数据库支持Linux,但是在上面搭建很是复杂,所以我想起了Docker ,果然在上面发现了一个OracleDB的镜像,所以下载之,运行, ...
随机推荐
- PL/SQL之--触发器
一.简介 触发器在数据库里以独立的对象进行存储,它与存储过程和函数不同的是,存储过程与函数需要用户显示调用才执行,而触发器是由一个事件来触发运行.oracle事件指的是对数据库的表或视图进行的inse ...
- openstack-networking-neutron(四)--iptables
Filter表:过滤数据包,默认表. (1)INPUT 链:过滤所有目标地址是本机的数据包(对进入本机数据包的过滤) (2)OUTPUT 链:过滤所有本机产生的数据包(对源地址得数据包的过滤) ( ...
- PHP实战-文章发布系统学习记录
跟随大师的步伐,一步一步向前行进,PHP学习之路中的历程. 如果图片不能正常查看请访问云笔记链接 http://note.youdao.com/share/?id=3c25d8c03ef946d9c6 ...
- 《精解Windows 10》
<精解Windows 10>全面深入讲解Windows 10操作系统的使用方法.本书共计14章内容.第一章简述Windows 10操作系统的一些变革:第二章介绍Modern 2.0界面的体 ...
- 《TCP/IP 详解 卷一》读书笔记-----Ping&Traceroute
1.ping是用于测试对方主机是否可达的命令,其实本质上就是echo类型的ICMP报文.同时,ping还能用于计算RTT(round-trip time),即两台主机间的往返时延. 2.随着网络安全意 ...
- OpenCV的安装与系统环境变量
OpenCV的安装与系统环境变量 安装OpenCV本来是很简单的一件事,但配置却很麻烦.而且在配置过程中尤为重要的步骤就是系统环境变量的配置.我使用的是CodeBlick13.12与OpenCV1.0 ...
- ACdream OJ 1099 瑶瑶的第K大 --分治+IO优化
这题其实就是一个求数组中第K大数的问题,用快速排序的思想可以解决.结果一路超时..原来要加输入输出优化,具体优化见代码. 顺便把求数组中第K大数和求数组中第K小数的求法给出来. 代码: /* * th ...
- 【转】Python中string的strip,lstrip,rstrip用法
Python中的strip用于去除字符串的首尾字符串,同理,lstrip用于去除左边的字符,rstrip用于去除右边的字符. 这三个函数都可传入一个参数,指定要去除的首尾字符. 需要注意的是,传入的是 ...
- IO流的练习3 —— 复制多级文件夹下的指定文件并改名
需求:复制指定目录下的指定文件,并修改后缀名. 指定的文件是:.java文件. 指定的后缀名是:.jad 数据源所在文件夹:C:\Users\Administrator\Desktop\记录 目的地所 ...
- java 19 -15 File类批量更改文件名的方法
/* 需求: * 把H:\三国演义下面的视频名称修改为 00?_介绍.avi 思路: A:封装目录 B:获取该目录下所有的文件的File数组 C:遍历该File数组,得到每一个File对象 D:拼接一 ...