javaWeb中的中文乱码问题
乱码问题可以分为 response 乱码和 request 乱码。 request乱码问题包含(get请求乱码和post请求乱码)。
- response 乱码问题解决
1 // setContentType() 需要在 getWriter() 方法之前设置 2 response.setContentType("text/html,charset=utf-8");// 设置浏览器响应头的Content-Type为text/html;charset=utf-8编码。 3 PrintWriter out = response.getWriter(); 4 out.write("输出中文");
- request乱码(get请求乱码)
1 // form表单get提交方式提交类容都位于 url中 2 // tomcat 默认使用的是 ISO-8859-1 需要将tomcat的 conf下的server.xml 添加URIEncoding="UTF-8"如下。 3 <Connector port="8080" protocol="HTTP/1.1" 4 connectionTimeout="20000" 5 redirectPort="8443" URIEncoding="UTF-8"/>
// 如果不修改只有极少数中文的话 可以使用
new String(request.getParameter("xxx").getBytes("ISO-8859-1"),"UTF-8") 解决乱码问题。
- request乱码(post请求乱码)
// post请求提交的内容位于request请求体而不是url所以和get请求处理方式不同 request.setCharacterEncoding("UTF-8"); String name = request.getParameter("name"); System.out.println(name);// 输出的是中文
在javaWeb 项目中 post请求乱码通常使用过滤器来解决。spring提供了 org.springframework.web.filter.CharacterEncodingFilter 解决post提交乱码问题。 使用方式如下:
1 <!-- 在web.xml文件中添加如下内容 --> 2 <filter> 3 <filter-name>encodingFilter</filter-name> 4 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 5 <init-param> 6 <param-name>encoding</param-name> 7 <param-value>UTF-8</param-value> <!-- 设置编码为请求编码为 UTF-8 --> 8 </init-param> 9 <init-param> 10 <param-name>forceEncoding</param-name> 11 <param-value>true</param-value> 12 </init-param> 13 </filter>
<!-- 设置 filter-mapping -->
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
欺骗自己最简单,欺骗自己最困难。
安慰自己最简单,安慰自己最困难。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】