开发中常见的中文乱码原因

简介:

在开发中,我们常常遇到中文乱码的问题,比如:

&浏览器中看到的 Jsp/Servlet 页面中的汉字成了 ’?’     

&浏览器中看到的 Servlet 页面中的汉字都成了乱码    

&Jsp/Servlet 页面无法显示 GBK 汉字。

&Jsp/Servlet 不能接收 form 提交的汉字。

&JSP/Servlet 数据库读写无法获得正确的内容。

隐藏在这些问题后面的是各种错误的字符转换和处理。解决类似的字符encoding问题,需要了解 Jsp/Servlet的运行过程,检查可能出现问题的各个点。下面是一些自己运用中的一些分享:

1.在jsp中如果指定了<%@ page contentType="text/html; charset=A"%>,那么在该jsp中所有构造的String(不是引用),如果沒有指定编码,那么这些String的编码是A的;从request得到的String如果沒有指定request的编码的话,他是iso-8859-1的;从别的地方得到的String是使用原來初始的编码的,比如从数据库得到String,如果数据库的编码是B,那么该String的编码是B而不是A的,也不是系统默认的。此时,如果要输出的String的编码不是A,那么,很可能显示乱码的,所以首先要将String正確转化为编码A的String,然后输出。

 

2. 如果在jsp中沒有指定<%@ page contentType="text/html; charset=A"%>,那么相当于指定了<%@pagecontentType="text/html; charset=ISO-8859-1" %>。

 

3. Servlet中如果执行了语句:response.setContentType("text/html;charset=A");説明将response的字符输出流编码设置为A,所有要输出的String的编码要转化为A,否則会得到乱码。Servlet中从request得到的String的编码和jsp中一样的,但是在servlet java文件中构造的String是使用的系统默认的编码的。在servelt中从外部得到的String是使用原来的编码的,比如从编码为B的数据库得到的数据是编码为B的,不是A,也不是系统默认的编码。

 

综上所属,要解决我们常见的中文乱码问题,需要理解数据交互中Jsp, Servlet, 数据库中数据的编码定义,统一编码格式或做适当转换。


目录
相关文章
|
Shell Android开发
解决Android的adb命令行报错Permission denied
解决Android的adb命令行报错Permission denied
2640 0
解决Android的adb命令行报错Permission denied
|
11月前
|
人工智能 Ubuntu Linux
我的工具库-2025
从2008年编写第一行代码起,我经历了多阶段的知识管理探索。初期使用草稿本和待办事项,后转为离线笔记软件、个人博客与印象笔记,最终在2023年选定Obsidian作为核心工具,结合卡片式笔记法和双链笔记,实现高效的知识收集、加工与分享。我的日常工具涵盖开发环境(如JetBrains系列)、操作系统(Ubuntu)、NAS系统(TrueNAS Scale)及各类辅助应用,形成了一个高度定制化的“外部大脑”。这一套工具不仅支持了我的工作和学习,也让我深刻体会到AI时代的便利与无限可能。
我的工具库-2025
|
数据中心
100Base-TX以太网媒体标准详细解析
【10月更文挑战第16天】
1829 1
|
存储 Kubernetes 安全
kubernetes集群降级|k8s1.24+版本降级到1.23
kubernetes集群降级|k8s1.24+版本降级到1.23
|
数据采集 人工智能 物联网
我们给大模型去掉了“AI味”-大模型微调全链路实战
本文档旨在概述使用ModelScope生态进行LLM训练的全链路最佳实践,涵盖数据下载、数据预处理、模型训练、模型评估完整流程。
|
前端开发 C++ 开发者
QML动画实战指南:打造华丽且高性能的用户界面动效
QML动画实战指南:打造华丽且高性能的用户界面动效
2183 0
|
NoSQL
编译和安装 libvirt 8.10.0
编译和安装 libvirt 8.10.0
1013 0
|
C++
Vscode 内存过高的解决办法
Vscode 内存过高的解决办法
2949 0
|
存储 JSON Java
JSON.toJSONString什么作用
JSON.toJSONString什么作用
622 0
|
安全 网络协议 Shell
SSH连接密码问题:原因、表现与解决方案
SSH连接密码问题:原因、表现与解决方案
4277 3