ssm项目中中文字符乱码
昨天给同学改一个错,在SSM项目中,表单输入的String类型中,中文字符值,总是乱码,在控制器层获取的数据就开始乱码,先后进行了如下排查:
- web.xml中配置设置字符编码的监听器(过滤器),
- jsp页面的编码格式,用记事本打开查看,
- 对jsp页面中设置编码格式
排查完之后,都没有问题,还是乱码,然后她今天早上来问老师.老师给了解决方法.
在控制器层得到字符串数据后,对字符串进行加工,将字符串转化为字节数组,然后以指定的编码方式在编码为字符串.
1 package com.qst.util; 2 3 /** 4 * @Description : 字符串转换编码格式为utf-8 5 * @Author: Liruilong 6 * @Date: 2019/9/29 10:38 7 */ 8 public class Util_UTF8 { 9 10 // String(byte[] bytes, Charset charset) 通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。 11 //getBytes(Charset charset) 使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组。 12 13 public static String toUTF8(String str) { 14 try { 15 // 如果编码格式为GB2313,则转换为UTF-8 16 if (str.equals(new String(str.getBytes("GB2312"), "GB2312"))) { 17 str = new String(str.getBytes("GB2312"), "utf-8"); 18 return str; 19 } 20 } catch (Exception exception) { 21 } 22 try { 23 // 如果编码格式为"西欧字符集"转化为utf-8 24 if (str.equals(new String(str.getBytes("ISO-8859-1"), "ISO-8859-1"))) { 25 str = new String(str.getBytes("ISO-8859-1"), "utf-8"); 26 return str; 27 } 28 } catch (Exception exception1) { 29 } 30 try { 31 // 如果编码格式为GBK,转换为utf-8. 32 if (str.equals(new String(str.getBytes("GBK"), "GBK"))) { 33 str = new String(str.getBytes("GBK"), "utf-8"); 34 return str; 35 } 36 } catch (Exception exception3) { 37 } 38 return str; 39 } 40 }
加油生活 ^_^ 2019.9.29
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构