首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >java web 中文乱码

java web 中文乱码

作者头像
星尘的一个朋友
发布2020-11-25 14:59:52
发布2020-11-25 14:59:52
1.4K0
举报

开发过程中,中文乱码的问题,一直都是一个老生常谈的问题困扰这开发人员。

1. 通过后台解决

代码语言:javascript
复制
public String youMethodName(HttpServletRequest req,...){
    String yourParam = req.getParameter("paramName");
    Matcher m = Pattern.compile("[\u4e00-\u9fa5]").matcher(yourParam);  
                //如果没有发现中文,说明使用get方式传递了中文,需要使用下面的方法转换  
                if (!m.find()) {  
                    programaName = this.tools.decodeUTF8FromIso88591(programaName);
                }  
    public String decodeUTF8FromIso88591(String paramStr) {
            if (null == paramStr || paramStr.length() <= 0) {
                return null;
            }
            try {
                byte[] bytes = paramStr.getBytes("iso-8859-1");
                paramStr = new String(bytes, "utf-8");
            } catch (Exception e) {
                e.printStackTrace();
            }
            return paramStr;
        }
}

一般情况我们是可以通过上面的方法解决中文的乱码问题,但也有特殊情况


2. 通过前台传递时解决

将请求参数经过URI编码在传给后台.防止了乱码;

代码语言:javascript
复制
var param = encodeURIComponent("yourParam");

当再需要使用的时候在通过对应的解码对其解码展示;

代码语言:javascript
复制
String param = encodeURIComponent(req.getParameter(param));

如果将转码过后的值作为数据存储到数据库中,这样同时可以防止数据库的SQL注入;

encodeURIComponent() URI编码

是将字符串 经过URI编码,避免get方式到后台乱码

name=中文字符

传到后台会根据浏览器不同有不同处理

tomcat server.xml中设置了编码 接收到的值也不一样

URI编码不能过滤非法字符

可以直接按F12在Console下面输入代码

代码语言:javascript
复制
console.log(encodeURIComponent("!@#$%^&"));
!%40%23%24%25%5E%26

所以如果这里面有非法字符比如 &%¥# 这些 经过encodeURIComponent 也都传到后台了

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/11/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档