SpringMVC页面中文乱码

本文介绍如何解决在SpringMVC项目中遇到的中文乱码问题,通过设置正确的pageEncoding和contentType属性来确保中文字符正确显示。

刚开始学习使用SpringMVC,完成配置之后开始编辑页面源码,添加了几个中文字符(index.jsp)

<html>
<body>
<h2>hello world中文字符</h2>
</body>
</html>

  运行查看页面效果,然后就是乱码,一系列的折腾之后修改页面源码为

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<body>
<h2>hello world中文字符</h2>
</body>
</html>

  中文乱码问题解决。详细原理可以了解一下jsp从被请求到响应经历的三个阶段。

第一阶段:将jsp编译成Servlet(.java)文件。用到的指令是pageEncoding,根据pageEncoding=“XXX”的指示,找到编码的规则为“XXX”,服务器在将JSP文件编译成.java文件时会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的UTF-8编码的JAVA源码(即.java)。


第二阶段:从Servlet文件(.java)到Java字节码文件(.class),从UTF-8到UTF-8。在这一阶段中,不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是UTF-8的encoding的java源码。JAVAC用UTF-8的encoding读取java源码,编译成UTF-8编码的二进制码(即.class),这是JVM对常数字串在二进制码(java encoding)内表达的规范。这一过程是由JVM的内在规范决定的,不受外界控制。


第三阶段:从服务器到浏览器,这在一过程中用到的指令是contentType。服务器载入和执行由第二阶段生成出来JAVA二进制码,输出的结果,也就是在客户端可见到的结果,在这次输出过程中,由contentType属性中的charset来指定,将UTF8形式的二进制码以charset的编码形式来输出。如果没有人为设定,则默认的是ISO-8859-1的形式。

 

转载于:https://www.cnblogs.com/LicwStack/p/7728723.html

SpringMVC前端页面乱码问题是在使用SpringMVC框架开发项目中最常遇到的问题之一。有几种可能的原因和解决方法。 首先,可以检查页面的HTML编码是否正确。直接在浏览器中打开HTML页面,如果页面显示正常,说明不是HTML页面的编码问题。否则,在<head>部分添加<meta charset="utf-8">可以解决HTML页面乱码问题。 其次,乱码问题也可能是Spring的编码问题。在SpringMVC的配置文件中,可以配置字符编码过滤器来处理乱码问题。常用的处理方式包括配置过滤器来设定请求和响应的字符编码为UTF-8,或者在控制器方法上使用@RequestParam注解指定请求参数的编码格式为UTF-8。 此外,乱码问题还可能是由于嵌入式的Jetty服务器的配置问题引起的。Jetty的默认编码设置为gb2312,而浏览器会根据这个编码设置自动对字符进行解码,导致页面显示乱码。可以通过在web.xml中添加配置来解决这个问题,配置如下: <locale-encoding-mapping-list> <locale-encoding-mapping> <locale>zh</locale> <encoding>UTF-8</encoding> </locale-encoding-mapping> </locale-encoding-mapping-list> 综上所述,解决SpringMVC前端页面乱码问题的方法包括检查HTML编码、配置Spring的字符编码过滤器和调整Jetty服务器的编码配置。根据具体情况选择适合的解决方法即可。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [spring mvc前端页面中文乱码问题解决思路](https://blog.youkuaiyun.com/lks1139230294/article/details/94391946)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [SpringMVC乱码问题](https://blog.youkuaiyun.com/qq_44894916/article/details/118862002)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值