全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-18 7 分钟 ✍️ juanwangdev

统一编码处理

Web应用全链路统一编码,避免各环节编码不一致导致乱码。

全链路编码配置

XML
浏览器 → 服务器 → 数据库 → 响应 → 浏览器
  ↓        ↓         ↓        ↓        ↓
 UTF-8   UTF-8    UTF-8    UTF-8   UTF-8

请求编码

POST请求

XML
<!-- web.xml配置编码过滤器 -->
<filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

GET请求

Java
<!-- Tomcat server.xml -->
<Connector port="8080" protocol="HTTP/1.1"
           URIEncoding="UTF-8"
           connectionTimeout="20000" />

响应编码

SpringMVC配置

jsp
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
        configurer.defaultContentType(MediaType.APPLICATION_JSON_UTF8);
    }
}

JSP页面

HTML
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

HTML页面

SQL
<meta charset="UTF-8">

数据库编码

MySQL配置

properties
-- 创建数据库
CREATE DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

-- 创建表
CREATE TABLE user (
    id INT,
    name VARCHAR(100) CHARACTER SET utf8mb4
) CHARACTER SET utf8mb4;

JDBC连接

XML
jdbc.url=jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf8mb4&serverTimezone=Asia/Shanghai

文件编码

IDEA设置

  • File Encoding:UTF-8
  • Project Encoding:UTF-8
  • Properties Files:UTF-8

Maven配置

Java
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

JSON编码

Controller返回JSON

text
@RestController
public class ApiController {

    @GetMapping(value = "/data", produces = "application/json;charset=UTF-8")
    public Map<String, Object> getData() {
        Map<String, Object> result = new HashMap<>();
        result.put("name", "张三");
        return result;
    }
}

编码检查清单

位置配置项
TomcatURIEncodingUTF-8
web.xmlencodingUTF-8
JSPcontentTypeUTF-8
JDBCcharacterEncodingUTF-8
IDEFile EncodingUTF-8

全链路统一UTF-8编码,是解决乱码的根本方案。

要点总结

  • Tomcat URIEncoding:解决GET请求乱码
  • CharacterEncodingFilter:解决POST请求乱码
  • contentType charset:解决响应乱码
  • JDBC characterEncoding:解决数据库乱码
  • IDE和项目编码:解决源码乱码

📝 发现内容有误?点击此处直接编辑

← 上一篇 乱码问题原因
下一篇 → 编码过滤器配置
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库