HTML页面为啥设置了UTF-8仍然中文乱码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTML页面为啥设置了UTF-8仍然中文乱码相关的知识,希望对你有一定的参考价值。

参考技术A

原因:网页没有设置meta charset编码造成。导致浏览器不能识别网页默认编码类型。

1、首先打开html页面中,鼠标右键单击HTML页面的空白的地方,弹出下图中的菜单栏。

2、然后在弹出来的菜单栏界面中,点击打开“编码”设置选项。

3、然后在弹出来的右侧菜单栏界面中,选择转换编码。

4、然后就可以解决问题了。

解决为什么已经设置了request.setCharacterEncoding("utf-8");POST请求仍然乱码的问题

request.setCharacterEncoding("utf-8");应该在获取请求参数之前设置

  在 http://bbs.csdn.net/topics/380124606 和 http://bbs.csdn.net/topics/370125113 找到的答案


 

由于POST传来数据,Tomcat默认以ISO-8859-1编码成单字节数据,若没有进行请求编码设置或重新编码操作,那么中文字符会在jsp页面中输出???,出现类似多个?形式的乱码现象。

测试发现,尽管jsp页面contentType和content均进行了下述设置,表单还是乱码

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%> page指令用于定义JSP页面的各种属性

  contentType:文档类型

  pageEncoding:页面编码

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 元素可提供有关页面的元信息

  http-equiv:把 content 属性关联到 HTTP 头部

  content:定义与 http-equiv 或 name 属性相关的元信息)

 

测试将表单method设置get,正常显示中文字符,这是由于Tomcat8之后,get请求默认编码为utf-8,不需要进行重新编码。

解决方式一:

    进行请求编码设置,这是最简单的,需要注意的问题就是不要在获取请求参数之后设置请求编码

    若已获取请求参数,此时还没有设置过编码,Tomcat会设置默认Post请求参数编码为ISO8859_1,那么你再设置成UTF-8也无效了,还是ISO-8859-1

解决方式二:

    类似与之前get请求的处理方法,先解码,再编码

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

这里 http://cosmo1987.iteye.com/blog/1116959 有关于编码格式设置的一些认识。

 


以上是关于HTML页面为啥设置了UTF-8仍然中文乱码的主要内容,如果未能解决你的问题,请参考以下文章

微信朋友圈,分享外链HTML网页为啥出现乱码

vue页面出现乱码,那么就需要在当前页面设置编码为utf-8

xml已经指定了UTF-8编码格式仍然导出中文乱码

VS2010打开的页面中,为啥中文全是乱码

运行servlet跳转页面变成了下载界面,或者中文乱码

php 多语言(UTF-8编码)导出ExcelCSV乱码解决办法之导出UTF-8编码的ExcelCSV