服务器与客户端交互的过程中出现中文乱码的解决方式

服务器响应到客户端中文乱码的解决方式

在Java Web开发的过程中,很多人都会遇到当服务器向浏览器发送响应页面时,有时候因为码表的查询不一致,会在浏览器出现乱码问题。

例如:服务器中使用的是UTF-8,而浏览器默认是查询本地码表,注意如果是中文系统则使用的是GBK码表。造成了码表查询不一致,会出现乱码的情况。服务端发出的响应,有字节流和字符流两种方式向浏览器发送页面信息。

字节流

对于字节流中,out.write(“中文”.getByte(“UTF-8”)),在浏览器中会出现乱码问题。

  1. 第一种解决方式:用户更改浏览器的解码方式。此种方式不可取。

  2. 通过HttpServletResponse对象,模拟HTTP协议的响应消息头来通知浏览器使用什么码表来进行查询解码。

    • 通过response.setHeader(“Content-Type”,”text/html:charset=UTF-8”);来通知浏览器解码方式。

    • 模拟HTML页面的标签:如下示例代码:

    String meta="<meta http-equiv='Content-Type'content='text.html; charset=UTF-8'>";resp.getOutputStream().write(meta.getBytes());
    • response.setContentType(“text/html:charset=UTF-8”)的方式来通知浏览器的解码方式。

字符流

在Servlet规范中要求,当使用字符流向浏览器发送页面信息时,默认查询的是ISO-8859-1码表。对于如下代码发送中文时有几种解决方式:

PrintWriter out=resp.getWriter();
out.print("中文");              //默认以ISO-8859-1编码。
  • 可以直接设置 resp.setCharacterEncoding(“GBK”); 以GBK方式编码

  • 当设置resp.setCharacterEncoding(“UTF-8”)编码输出时,可以使用字节流的通知客户端以UTF-8解码显示几种方式解决。

    • response.setHeader(“Content-Type”, “text/html; charset=UTF-8”);

    • response.setContentType(“text/html; charset=UTF-8”);

客户端请求服务器出现的中文乱码解决方式

当浏览器在表单填写中文参数时,发回到服务器收到的参数信息是乱码,这样在封装参数信息时,会出现错误。那么怎么解决中文的请求参数乱码问题呢?由于表单提交有两种方式:GET和POST,所以在处理中文的乱码问题也有所不同。

post方式

浏览器当前使用什么编码,表单提交的参数就是什么编码。这里服务器可以有多种方式去通知浏览器的编码方式。HTML中的meta标签可以这样做。示例代码如下:

<metahttp-equiv="content-type" content="text/html; charset=UTF-8">

但是这样并不能解决问题,需要通知程序,客户端提交的数据使用的编码。需要在接受参数的Servlet类中添加这段代码:

request.setCharacterEncoding("utf-8");

如果向客户端发出响应可能还需要添加如下代码才能在结果页面出现正确的中文:

response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");

GET方式

如果是GET请求提交数据,编码采用的ISO-8859-1。就不能使用上述的解决办法。这时需要在服务器端的Servlet类中先将其以ISO-8859-1进行解码,再使用UTF-8进行编码。示例代码如下:

  String name=request.getParameter("name");name=new String(name.getBytes("ISO-8859-1"),"UTF-8");

服务器响应到客户端中文乱码的解决方式相关推荐

  1. php过滤掉不乱码json,PHP JSON编码后,中文乱码的解决方式

    1,有些时候,需要写接口,传递一些中文值,那么JSON编码,会出现目前以下两种情况! a.输出乱码 $testJSON=array('name'=>'中文字符串','value'=>'te ...

  2. php mpdf.mpdf,PHP MPDF中文乱码的解决方式

    废话不多说了,直接奔入主题了. 推荐教程:PHP使用MPDF类生成PDF的方法 1.config.php文件,大约67行:$this->autoLangToFont = true; 2.使用的时 ...

  3. Ubuntu10.04下gFtp2.0.19 远程客户端中文乱码解决方法

    Ubuntu10.04下gFtp2.0.19 远程客户端中文乱码解决方法如下: 1.打开"gFTP-FTP-属性-常规-远程字符集": 2.将远程字符集设置为:gb2312,gbk ...

  4. JSP页面和html页面中文乱码的解决

    1.在JSP页面添加 <%@ page contentType="text/html; charset=utf-8" %> <%--这里的utf-8是指服务器发送 ...

  5. asp.net ajax中文乱码的解决?2010-01-19 12:06

    asp.net ajax中文乱码的解决? 2010-01-19 12:06 以前没怎么仔细的研究过ajax,只是用到了就直接拿过来用,发现了问题再找解决方法.以下是我在找解决问题的过程中的一点小小的总 ...

  6. zabbix_server执行window脚本出现中文乱码如何解决

    转载来源 : zabbix_server执行window脚本出现中文乱码如何解决 :http://www.lwops.cn/thread-313-1-1.html 场景分析: A企业员工啊旺在zabb ...

  7. 英文系统中文乱码的解决

    Windows7英文系统显示中文乱码的解决 Windows7英文系统显示中文乱码的解决 很多安装Windows7英文操作系统的朋友会显示中文乱码,特别是在安装了中文程序的时候,那么如何解决呢? 如果我 ...

  8. MYSQL使用UTF8中文乱码终极解决办法

    转自:http://wenku.baidu.com/view/d2d4f15ba8114431b80dd81f.html MYSQL使用UTF8中文乱码终极解决办法   作者:刘明灵 liumingl ...

  9. ASP+Access中文乱码的解决方法,ASP中文乱码,asp乱码问题

    确保编码声明正确(例:时尚淘女之家http://www.tao36524.com) 如果您使用的是国外空间,默认是西欧而不是GB2312,你可以通过强制为GD2312的方式! 在数据提取页面的第一行代 ...

最新文章

  1. 命令行下findstr的BUG(Windows)
  2. Android px pt dp sp...
  3. 数据:灰度增持3594枚LTC和1.43万枚LINK
  4. MVVM教程[资源+分析]
  5. Sublime Text 3快捷键
  6. 学习笔记--对最近学习的总结
  7. 一文详解中英文在NLP上的10大差异点
  8. 小型超市管理系统 C++面向对象
  9. 三步教你制作拼多多优惠券cms网站系统的返利功能
  10. 游学只缘图利国 求知理应做腾骧
  11. 木纹标识lisp_LISP架构中一种新的移动性管理方案研究
  12. 一个公务员工作七年后的肺腑之言”——给想考公务员的XDJM们看看,或许能有帮助
  13. 为什么人人都爱康师傅
  14. python frame用法_Pandas Series.to_frame()用法介绍
  15. php 递归 递归方式与算法
  16. 几张趣图带你了解程序员眼中的世界
  17. 【vue 基础】 vue常用指令 实例总结
  18. Dubbo剖析-粘包与半包问题(一)
  19. verdaccio每次下载有时候不会加载taz压缩包原因解决
  20. python实现基金定投并可视化结果(及时止损)

热门文章

  1. 【LiteOS】小白进阶之系统移植配置解析
  2. CL210管理存储--管理临时和持久存储+章节实验
  3. SSH端口转发Forwarding及隧道Tunneling
  4. linux 运行eve,EVE-NG简单入门介绍
  5. Shell程序退出状态码的命令详解
  6. java学习笔记20(Lambda表达式、函数式编程、流式计算、练习)
  7. 大学计算机课程ppt,以计算思维为导向的大学计算机基础课
  8. 使用Python对文件进行批量改名
  9. DM8在银河麒麟服务器上配置Oracle19c的DBLINK服务
  10. wordpress友联_WordPress如何添加友情链接