基本讲解:

1.UTF-8国际编码,GBK中文编码。GBK包含GB2312,即如果通过GB2312编码后可以通过GBK解码,反之可能不成立;

2、web tomcat:默认是ISO8859-1,不支持中文的

3.java.nio.charset.Charset.defaultCharset() 获得平台默认字符编码;

4.getBytes() 是通过平台默认字符集进行编码;

response乱码问题********************

解决方法:

添加:

response.setCharacterEncoding("UTF-8");

解决不了,后来又搜到一条解决方法是:

response.setContentType("text/html;charset=utf-8");或者 response.setHeader("content-type","text/html;charset=UTF-8");告诉浏览器用utf-8解析。(setHeader是HttpServletResponse的方法。如果想在拦截器Filter中设置字符编码,则无此方法,因为Filter的doFilter方法的参数类型是ServletResponse)

两句都填上,后来终于解决了这个问题;

其实我们应该思考一下本质:

response.setContentType("text/html;charset=UTF-8"); 目的是为了控制浏览器的行为,即控制浏览器用UTF-8进行解码;

response.setCharacterEncoding("UTF-8");目的是用于response.getWriter()输出的字符流的乱码问题。如果是response.getOutputStream()是不需要此种解决方案的,因为这句话的意思是为了将response对象中的数据以UTF-8解码后的字节流发向浏览器;

Servlet相关的几种乱码******************

1、浏览器调用jsp,html等页面中文显示乱码

此情况需满足两个要求:

(1)文件本身是以utf-8编辑保存的(myEclipse中在properties中鼠标右键选择utf-8)

(2)浏览器用utf-8解析:

(手动)==> 在浏览器中右键选择编码格式为utf-8

(智能)==> 在文件中写入如: <meta name="content-type" content="text/html; charset=UTF-8">  通过<meta>标签模拟response头,起到告诉浏览器用utf-8的编码解析

(智能)==> response.setContentType("text/html;charset=UTF-8");起到告诉浏览器用utf-8的编码解析

常用:

<meta name="content-type" content="text/html; charset=UTF-8">或<meta charset="utf-8">

<%@ pageEncoding="utf-8"%>

<?xml encoding="UTF-8"?>

request乱码问题*******************

request请求分为post和get,对于不同的请求方式有不同的解决乱码的方案;
==>POST请求:

==>GET请求(URI方式传递参数乱码):

出现情况:浏览器访问<a href=""><form method="get">

如:<a href="/webproject/display.jsp?username=张三&password=123">显示用户名和密码</a>

解决方法:问题本质是get方式传递的参数内容默认编码方式问ISO8859-1,而且使用request.setCharacterEncoding("utf-8")也无法解决问题。

法一:要解决这个问题,修改tomcat服务器的配置文件。修改tomcat目录下的conf/server.xml文件的第43行:

修改前内容:

<Connector port="8080" protocol="HTTP/1.1"

maxThreads="150"   connectionTimeout="200000"

redirecPort="8443"/>

修改后内容:

<Connector port="8080" protocol="HTTP/1.1"

maxThreads="150"   connectionTimeout="200000"

redirecPort="8443"    URIEncoding="utf-8"/>

法二:String usernameString = new String(username.getBytes("ISO-8859-1"),"UTF-8");

JSP相关乱码解决觉案**************************

问题描述:通过jsp,html,或servlet中的表单元素把参数提交给对应的jsp或者servlet时,在接收的jsp或servlet中接收到的参数中文显示乱码。

例如:

提交jsp代码如下:

<%@ page language="java" pageEncoding="utf-8"%>

<html>

<head>

<title>输入表单</title>

</head>

<body>

<form id="inputForm" name="inputForm" method="post" action="display.jsp">

用户名:<input type="text" name="username"/><br/>

密   码  :<input type="password" name="password"/><br/>

<input type="submit" name="submit" value="提交"/>

</form>

</body>

</html>

接收参数的jsp代码如下:

<% @  page language="java" pageEncoding="utf-8"%>

<html>

<head>

<tilte>接收表单</title>

</head>

<body>

<% 在这里插入

request.setCharacterEncoding("utf-8");

%>

用户名:<%=request.getParameter("username")%><br/>

密     码:<%=request.getParameter("password")%><br/>

</body>

</html>

解决方法:在接收post提交的参数前,使用request.setCharacterEncoding("utf-8")设定接收参数的内容格式为utf-8编码。见接收表单中的插入内容即可。当然这种乱码问题最好使用中文过滤器的方法最好。

web引入js文件出现乱码的解决方式:******************

在web开发中我们一般都会不可避免的使用js。我们可以将js代码直接放在页面中即通过内部使用js。但是为了给页面良好的"瘦身"我们一般都会将js代码放在外部,然后通过src引用。这个时候我们就需要注意一个问题:编码问题。如果web页面也js采用不同编码,这个时候就会出现乱码。(内部使用js不需要注意编码问题,因为他们采用的是同一种编码)

解决方式1:

<script type=”text/javascript” src=”test.js” charset=”utf-8″></script>

解决方式2:

<script type=”text/javascript” src=”test.js” charset=”gb2312″></script>

转载于:https://www.cnblogs.com/xiaobaizhang/p/8016691.html

web中常见乱码问题详解相关推荐

  1. PHP开发中常见的安全问题详解和解决方法

    PHP开发中常见的安全问题详解和解决方法 参考文章: (1)PHP开发中常见的安全问题详解和解决方法 (2)https://www.cnblogs.com/walblog/articles/83313 ...

  2. JavaScript 面试中常见算法问题详解

    JavaScript 面试中常见算法问题详解,翻译自 https://github.com/kennymkchan/interview-questions-in-javascript.下文提到的很多问 ...

  3. java 控制jsp_JSP学习之Java Web中的安全控制实例详解

    普通用户界面 修改登录的Servlet,修改后的代码如下: LoginProcess.java代码: package servlet; import javabean.User; import jav ...

  4. web服务器常见配置搭建详解(超详细)

    前言: 本博客借鉴一些写的比较好的博客,进行归纳总结,整理了一篇比较详细的服务器常见配置搭建教程 一来是和大家一起分享,二来也是作为自己的学习笔记记录一下. 温馨提示: 篇幅较长,请分阶段选择性查看. ...

  5. C语言中常见字符串API详解

    以下均为笔记,草率见谅,首先介绍下在字符串章节所用的函数,再介绍几个常见的api malloc 函数原型:void *malloc(size_t size) C库函数void *malloc(size ...

  6. JavaScript 中常见排序算法详解

    十大经典算法 一张图概括: 名词解释: n:数据规模 k:"桶"的个数 In-place:占用常数内存,不占用额外内存 Out-place:占用额外内存 稳定性:排序后2个相等键值 ...

  7. Computer:字符编码(ASCII编码/GBK编码/BASE64编码/UTF-8编码)的简介、案例应用(python中的编码格式及常见编码问题详解)之详细攻略

    Computer:字符编码(ASCII编码/GBK编码/BASE64编码/UTF-8编码)的简介.案例应用(python中的编码格式及常见编码问题详解)之详细攻略 目录 符串编码(ASCII编码/GB ...

  8. python中导入模块是用哪个关键字_关于python导入模块import与常见的模块详解

    0.什么是python模块?干什么的用的? Java中如果使用abs()函数,则需要需要导入Math包,同样python也是封装的,因为python提供的函数太多,所以根据函数的功能将其封装在不同的m ...

  9. java web初始化实例_Struts2中实现web应用的初始化实例详解

    Struts2中实现web应用的初始化实例详解 在JavsSE中,main方法为应用提供了入口,而在Android中,我们可以使用Application对于整个应用的生命周期进行管理,那么在基于Str ...

最新文章

  1. 虚拟机centos7忘记密码怎么办_电脑忘记密码怎么办
  2. Spring Framework 5.2 正式发布,14项新特性一览
  3. 结构体成员地址获得结构体起始地址
  4. 在weka中配置自己的算法 zz
  5. cocos2d-x游戏实例(23)-简易动作游戏(1)
  6. 在循环里创建数据库连接,严重影响数据库性能
  7. 编译并使用boost库(win7+boost1.60+vs2013)
  8. 第十六章 复杂的抽像类结构
  9. spark-streaming连接flume时报错org.jboss.netty.channel.ChannelException: Failed to bind to: /IP:PORT
  10. 无人车首例阵亡事件,AI教育春江水暖
  11. 排名怎么查_公布考研成绩排名?怎么查?
  12. 程序装在C盘Programe file下无写文件权限问题
  13. java突然无法加载主类_Java 找不到或无法加载主类的修复方法
  14. 双S曲线轨迹(详细推导)
  15. std::tuple、std::tie(可用于结构体大小比较)、std::pair用法
  16. gpart 分区工具
  17. 利用USB RUBBER DUCKY(USB 橡皮鸭)在目标机器上启动Empire或Meterpreter会话
  18. Javascript实战——电子钟(时钟、闹钟、计时器、倒计时)
  19. 基于Python批量去水印优化批量OCR的质量
  20. [ERP]IQC,IPQC,PQC,FQC,OQC是什么意思?是干什么的?

热门文章

  1. Android P 调用隐藏API限制原理
  2. C语言实现的ABCI
  3. 无源码动态调试APK
  4. Rxjava+Retrofit的使用实例(基于retrofit2.1.0)
  5. php代码文本型怎么更改成数值型,php 怎么将字符转成数字
  6. QThreadPool Class的翻译
  7. vue-cli 没有build如何配置_webpack4配置实现浏览器长期缓存
  8. 集合(normal)
  9. 笨小猴pascal题解
  10. 浏览器左上角的小图标怎么整不掉_Honeyview:蜂蜜浏览器