一文搞懂:中文乱码原因以及解决方案

简介: 一文搞懂:中文乱码原因以及解决方案

"

1.产生原因

  在项目中从JSP页面传回来的中文在后台接受时变为乱码,因为JSP默认参数在传输过程中使用的编码为ISO-8859-1,而页面常用的是UTF-8编码,所以导致中文传回来是乱码,而英文没问题,ISO-8859-1就是英文编码。

  UTF-8是国际网络通用编码,是Unicode编码的网络实现版,当然兼容中英文。

  关于计算机编码,我可以推荐一个知乎上文章,链接如下:

2.最佳解决方法

  2.1.在后台编写filter,将请求的参数都转换为UTF-8,代码如下:

package com.zy.filter;

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class EncodingFilter implements Filter{

@Override

public void destroy() {

// TODO Auto-generated method stub

}

@Override

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)

throws IOException, ServletException {

//doFilter方法的第一个参数req,是ServletRequest 类型的,不支持setCharacterEncoding,

//所以要先强制转换为HttpServletRequest

HttpServletRequest request = (HttpServletRequest)req;

HttpServletResponse response = (HttpServletResponse)res;

req.setCharacterEncoding(""UTF-8"");

chain.doFilter(request, response);

}

@Override

public void //代码效果参考:https://v.youku.com/v_show/id_XNjQwMDQxMTUzMg==.html

init(FilterConfig arg0) throws ServletException {

// TODO Auto-generated method stub

}

}

  2.2.修改web.xml配置,添加编码filter,代码如下:

[/span>filter

[/span>filter-name

[/span>filter-class

[/span>filter-mapping

//代码效果参考:https://v.youku.com/v_show/id_XNjQwMDQwNjkxMg==.html

[/span>filter-name

[/span>url-pattern


"
image.png

相关文章
|
Java 关系型数据库 MySQL
Java中文乱码浅析及解决方案
Java中文乱码浅析及解决方案
|
9月前
|
人工智能 测试技术 调度
写用例写到怀疑人生?AI 智能测试平台帮你一键生成!
霍格沃兹测试开发学社推出AI智能测试用例生成功能,结合需求文档一键生成高质量测试用例,大幅提升效率,减少重复劳动。支持自定义提示词、多文档分析与批量管理,助力测试人员高效完成测试设计,释放更多时间投入核心分析工作。平台已开放内测,欢迎体验!
|
JSON 数据格式 C++
cpp struct json相互转换
使用 `nlohmann/json`库,可以简便地在C++中实现结构体与JSON之间的相互转换。通过定义序列化和反序列化函数,可以处理简单和复杂的结构体类型。这种方法不仅提高了代码的可读性和维护性,还增强了数据交换的灵活性。
915 26
|
算法 搜索推荐 数据可视化
Beta分布与汤普森采样:智能决策系统概率采样的理论基础
在现代技术领域,算法决策优化成为核心竞争力的关键。Meta、Netflix和亚马逊等公司通过广告位置、缩略图及产品推荐的优化,显著提升了用户体验和商业效益。这些优化背后的共同点是采用了基于Beta分布的汤普森采样算法,有效解决了决策系统中探索与利用的平衡问题。通过从概率分布中随机采样来做出决策,汤普森采样不仅保证了对已知良好选项的充分利用,还维持了对潜在更优选项的探索,从而在实践中实现了高效且自适应的决策过程。
619 8
|
存储 JavaScript 前端开发
js中的遍历方法比较:map、for...in、for...of、reduce和forEach的特点与适用场景
js中的遍历方法比较:map、for...in、for...of、reduce和forEach的特点与适用场景
905 0
|
缓存 Java 关系型数据库
【超全详解】Maven工程配置与常见问题解决指南
检查Maven配置包括验证路径、设置pom.xml与Project Structure的Java版本。基本操作有`clean-compile`、`install`和`package`,其中`install`会将jar包放入本地仓库。获取他人工程后需修改配置、清除缓存、更新依赖等。配置文件应从Maven Repository找寻,选择稳定高版本。创建Maven工程可选archetype如`quickstart`或直接创建Java工程。基本目录结构遵循分层设计原则,常见问题包括假性导包、端口占用、时区问题等,对应解决方案包括删除本地仓库文件、调整系统设置或重新加载项目。
2610 6
【超全详解】Maven工程配置与常见问题解决指南
|
SQL 数据库连接 数据库
使用 Python 和 SQLAlchemy 进行数据库操作
【10月更文挑战第2天】使用 Python 和 SQLAlchemy 进行数据库操作
|
Java API 开发者
【开发者福音】Spring Boot 异常处理:优雅应对错误,提升应用健壮性,让调试不再是噩梦!
【8月更文挑战第29天】本文通过对比传统错误处理方式与Spring Boot推荐的最佳实践,展示了如何在Spring Boot应用中实现统一且优雅的异常处理。传统方法需在每个可能出错的地方显式处理异常,导致代码冗余且不一致。而Spring Boot的全局异常处理机制则能集中处理所有异常,简化代码并确保错误响应格式统一,提高应用程序的健壮性和可维护性。文中提供了具体的示例代码以帮助读者更好地理解和应用这一机制。
658 0
|
存储 设计模式 监控
Java面试题:简述JVM的内存结构,包括堆、栈、方法区等。栈内存优化的方法有 哪些?
Java面试题:简述JVM的内存结构,包括堆、栈、方法区等。栈内存优化的方法有 哪些?
272 0

热门文章

最新文章