为什么页面接收到的中文是乱码?

UDP中文接收出现乱码问题结局 今天重新温故UDP的时候出了一个小BUG,中文传输后收到的是乱码想了一下,其实是中文字符与英文字符所占字节问题。 上代码: 客户端代码: public class ScoketSend { public static void main(String[] args) throws Exception { Scanner sc = new Scanner 阅读详情
 

         在开发中,我们也许会遇到在页面之间传递参数的时候,传递因为参数是没有什么问题的,但是传递中文参数缺是乱码,本文大致讲解下一些关于中文乱码的一些问题。

一、           几种常用编码

1.       ASCII编码

产生目的:解决英文字符与二进制位之间的对应关系

原理:由于计算机中的所有信息都是采用二进制位(bit)表示的字符串,一个字节(byte)由8个二进制位组成,所以最多可以表示256个英文字符。由于ASCII码只有128个字符,所以只用一个字节的后边7位已经足够,最前面的1位统一用0表示。

字符个数:128个

2.       ISO-8859-1编码

产生目的:解决ASCII码在不同国家不够用的情况,是一个单字节编码(该编码是JAVA网络传输使用的标准字符集,)

原理:对于ASCII编码剩下的最前面的1位进行编码,所以个数是ASCII码的2倍,也就是256个

字符个数:256个

3.       GB2312编码

产生目的:中华人民共和国国家汉字信息交换用编码,主要是我国为了表示汉字而颁发的一种编码

字符个数: 7445个(汉字6763个)

4.       GBK编码

产生目的:由于GB2312编码支持的汉字只能有6763个,为了支持能够支持更多的汉字而开发的一种编码,支持GB2312编码的6763个字符。(也就是GB2312编码的扩充)

字符个数:21886个(汉字20902个)

5.       UTF-8编码

产生目的:是Unicode编码的一种编码方式,为了解决能够表达全球不同国家的不同字符,在不同国家打开同一文件不再是乱码。

原理:采用8位序列来编码,用一个字节或者几个字节来表示一个字符。UTF-8是一种变长的编码方式,一个字符的长度为1-4个字节。

6.       其他

UTF-16和UTF-32也是unicode的2中不同编码方式,他们分别是采用16位和32位的序列来编码,通常说的Unicode编码指的是UTF-16。由于在HTML4中已经能够很好的支持UTF-8了,所以现在因特网的编码方式首选还是UTF-8。

二、           页面传递参数原理

     http请求过程

上图的说明:

第一步:

用户填写表单信息

第二步:

IE对用户填写的表单信息进行编码,优先采用IE的设置,其次采用contentType的值进行编码(IE默认采用UTF-8编码)

第三步:

         应用服务器根据request对象上设置的characterEncoding的值对request中获取到的值进行解码(Tomcat服务器默认是ISO-8859-1),

第四步:

         在页面中接收参数,调用request.getParameter(“ParamName”)方法获取参数值

三、           实例

四、           Tomcat应用服务器传递参数解

1.       server.xml中Connect节点监听的线程从request中 获取数据的类

org.apache.catalina.connector.InputBuffer

2.       类的调用关系

      类的调用关系

3.     看看org.apache.catalina.connector.Request的parseParameters方法

     org.apache.catalina.connector.Request的parseParameters方法

4.       再来看看org.apache.tomcat.util.http.Parameters的addParam的调用过程

         org.apache.tomcat.util.http.Parameters的addParam方法

5.        addParam的时候参数是已经编码,具体的编码跟踪之后可以确定是跟charsetEncoding有关,下图是调用在方法:org.apache.tomcat.util.http.Parameters的processParameters方法

     org.apache.tomcat.util.http.Parameters的processParameters方法,addParam的时候是已经编码之后的

6.       Tomcat的request默认编码设置见InputBuffer. setConverter方法

     setConverter的代码

7.       为什么接受中文是乱码?

在上图中,当我们第二步采用的编码是UTF-8,如果我们没有指定request.setCharacterEncoding()的值,那么在第三步Tomcat应用服务器采用默认的iso-8859-1进行解码,这样导致编码和解码不一致,所以读取中文的时候是乱码了。

Spring MVC——JSP页面中文乱码 问题描述 即便在web.xml文件中添加了UTF-8的编码过滤器 <!-- 编码过滤器 --> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springfr 阅读详情

相关推荐

字符乱码的5大原因及解决方法一览!

作为一名程序员,我不得不说,字符乱码是我们经常遇到的一个令人头疼的问题。它不仅会影响我们的工作效率,还可能导致重要信息的丢失。但别担心,今天我就来和大家分享一下字符乱码的常见原因以及解决方法,让你以后遇到这种情况时不再手足无措。 首先,让我们来看看最常用的一种解决方案: 文本乱码转码助手(小白推荐,工具由"勤学道人"开发)

m0_56280293的博客 9514

通过http.client解析url返回的数据时为什么中文变成了unicode码

今天在解析json数据的时候得到了一堆这样的数据:{"errNum":0,"errMsg":"success","retData":[{"title":"\u6536\u5e9f\u54c1\u5927\u53d4\u521a\u4e0a\u53f0\uff0c\u5c31\u60e8\u906d\u8bc4\u59d4\u706d\u706f\uff0c\u4f46\u63a5\u4e0b\u6765\u5168\u573a\u90fd\u9707\u60ca\u4e86\uff01","url":"ht

tbdp6411的专栏 3020

Zabbix华为交换机光衰告警

zabbix使用自动发现监控huawei网络设备光衰

qq_31651649的博客 4529

http 请求数据返回 json 中中文字符为 unicode 编码转汉字转码

http 请求数据返回 json 中中文字符为 unicode 编码转汉字转码 我也遇到过,还是URLDecoder.decode()、和其他办法,可是不管用。也不知道是哪里出问题,也许是开始不应该把 jsonResult 当成字符串吧。 情形一: Gson会把html标签,转换为Unicode转义字符 正确方法: Gson gson = new GsonBuilde

Mr、温少的博客 2万+

Silvaco Atlas从头开始(四)——定义材料参数和模型

这部分是关于定义材料参数和模型。

qsz1425AWD2121的博客 4651

基于STM32的多模态智能风扇控制系统设计与实现

本文详细介绍了基于STM32单片机的多模态智能风扇控制系统的设计与实现。系统集成了红外遥控、蓝牙手机控制及人体感应等多模态交互方式,通过PWM技术实现无级调速,并设计了安全优先的控制逻辑。文章从硬件选型、核心原理、软件编程到系统调试,提供了完整的实战指南,适合嵌入式开发爱好者学习与实践。

weixin_28285943的博客 238

接收中文参数乱码解决方法

一、在@RequestMapping中添加produces = "text/html;charset=UTF-8" 参考:http://blog.youkuaiyun.com/choushi300/article/details/53905999 二、修改tomcat配置文件server.xml,添加URIEncoding="utf-8" 参考:http://blog.youkuaiyun.com/bo_w

choushi300的博客 1013

ECMWF等大气数据批量下载(Python API)详细步骤

ECMWF等大气数据批量下载(Python API) 遥感方向做热红外温度反演,不可避免的要用到大气廓线数据,大气数据具有实时性,比如2018年9月1日的早上8点的影像,为了提高反演精度就需要用到时间上与其相差尽可能接近的大气数据,用于消除大气的影响,如果数据量较少我们可以查看影像的时间和空间范围进行下载,但是如果处理某个较大区域时可能涉及到大量的影像,如果一景一景对应查找去下载会很麻烦,因此针对大量数据的自动批量下载很有必要。本文根据 https://cds.climate.copernicus.eu/#

liuxiaojiangtobeno1的博客 1万+

java后端接收中文乱码

解决Java后端接收中文乱码问题 在进行Java后端开发的过程中,经常会遇到接收中文参数时出现乱码的情况。这种问题主要是由于字符编码不一致导致的。在本文中,我们将介绍如何解决Java后端接收中文乱码问题,并给出相应的代码示例。 问题描述 在进行Java后端接口开发时,如果接收到的参数中包含中文字符,有时候会出现乱码情况。这...

weixin_41536347的博客 536

网络系统管理专栏-配套练习+知识点详解

网络系统管理专栏-配套练习+知识点详解

bfq05234214的博客 682

基于语义分割的实时建图:HDMap动态更新

基于语义分割的实时建图:HDMap动态更新​ ,人工智能,计算机视觉,大模型,AI,本文围绕基于语义分割的实时建图技术在HDMap动态更新中的应用展开,介绍了语义分割基础、HDMap概述、相关实时建图技术、动态更新关键技术、系统性能评估指标、实际应用案例、面临的挑战与解决方案及未来发展趋势。阐述了该技术如何利用传感器数据和语义分割算法,解决传统HDMap构建与更新的弊端,分析了其在精度、实时性、鲁棒性等方面的表现,以及在自动驾驶和智能交通中的应用,还探讨了现存问题及未来优化方向。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 22万+

asp页面接收中文乱码_为什么PDF转换成Word后是乱码?这种PDF要怎么转换?

你是否也遇到过将PDF转换成Word后,却只是一堆乱码?为什么会出现这种情况呢?要如何解决PDF转Word却是乱码的这个问题呢?首先我们来分析下PDF转换Word后为什么会出现乱码,其实归根究底都是字体的问题,一般有以下3种情况:1、原PDF文档中的文字编码丢失或不兼容。2、用其他文档格式转换为PDF时使用了内嵌的字体。3、PDF文档制作时设置了一些文字权限或操作过程有错误等,导致反向转换时也无法...

weixin_33785828的博客 202

14.建立时间、保持时间以及vivado时序report的参考使用

在设计数字系统时,需要仔细考虑电路元件的选择和布局以及时序设计来满足建立时间和保持时间的要求。建立时间,又称为建立时间窗口或建立期,是指数字信号在触发器的时钟信号前沿到来之前,必须已经稳定存在的时间。在本章节将结婚扫建立时间和保持时间的基本原理,以及如何通过vivado处理建立时间和保持时间。通过使用同步电路,可以更好地控制数据传输的时序并满足建立时间和保持时间的要求。例如,在D触发器中,选择具有适当充电和放电特性的D端口元件可以确保在时钟信号前沿到达前数据已经稳定存在,并在时钟信号前沿到达后保持稳定。

FPGA/MATLAB学习教程/源码/项目合作开发 2986

关于页面请求中文乱码问题

这是一个折磨人的问题,很多人为了这个问题研究了好久,但是都没有彻底的根除。加入我们是页面发来的请求我们可以在页面设置编码格式为UTF-8,但是是未知设备的请求我们没有办法去设置其编码格式呢? 就以tomcat为例:    我们可以修改通过服务器的时候的编码格式: 修改方法如下: (1)修改文件为tomcat下server.xml; <Connector URIEncoding="UTF

zhangyupeng874435676的专栏 398

MAX30102心率血氧传感器原理图设计,已量产(e-Health传感器)

在最近的便携健康监测设备项目中,我们采用了集成算法的 MAX30102 心率血氧模块 —— 这类带内置 MCU 算法的传感器能直接输出心率 / 血氧数值,大幅降低了主控资源占用。但硬件电路的稳定性直接决定了 PPG 信号的采集精度,下面结合实际项目里的原理图,拆解下这个模块的设计细节。

不脱发的程序猿 1280

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Servlet接收中文乱码

返回包含初始化参数值的字符串,如果该参数不存在,则返回。返回包含初始化参数值的字符串,如果该参数不存在,则返回。的初始化参数的名称作为字符串对象的枚举返回,如果。的初始化参数的名称作为字符串对象的枚举返回,如。本身的相关配置信息,在初始化期间用于将信息。返回包含给定虚拟路径的实际路径的字符串。将指定的属性名和属性值绑定到当前对象。解码,当编码与解码方式不一致时。没有初始化参数,则返回空枚举。将中文字符重新编码,默认编码为。没有初始化参数,则返回空枚举。将接收到的中文乱码重新编码。将位于指定路径的资源作为。

2403_87445684的博客 1609

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

解决SpringMVC Controller接收页面传递的中文参数出现乱码问题

spring MVC中默认的编码格式为“ISO-8859-1”,在编码过程中,页面中的Pagecoding和Charset都设置为utf-8, 而且在RequestMapping中也设置了charset @RequestMapping(value = "***",produces = "text/plain;charset=UTF-8") 后来经过查询这里设置的charset和页面中设置中的c...

努力努力再努力m 4364

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

springmvc中文乱码解决,包括接收乱码和发送乱码

一、springmvc请求中文乱码 1、post请求乱码            在web.xml加入filter过滤,注意,只能解决浏览器端发送post请求,controller接收中文乱码的情况。 &lt;!-- POST字符编码过滤 --&gt; &lt;filter&gt; &lt;description&gt;字符集过滤器&lt;/description&gt; ...

quite64的博客 3085

jsp页面request获取中文参数乱码解决办法

在jsp页面通过request请求获取参数code有中文值时,得到的参数会自动过滤掉中文,或者是得到一串乱码,如果是查询页面通过这个参数查询会查不到数据,当使用url传递code参数跳转到另一个页面时得到的也是乱码,那怎么解决乱码问题呢? 如图所示在jsp页面虽然定义了contentType为UTF-8: <%@ page contentType="text/html; charset=...

Z3416481的博客 4804

SpringMVC接收参数中文乱码解决方案

????程序员小王的博客:程序员小王的博客 ???? 欢迎点赞 ???? 收藏 ⭐留言 ???? ???? 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 ????java自学的学习路线:java自学的学习路线 1、前端传递参数 <form action="${pageContext.request.contextPath}/user/register" method="post"> 姓名:<input type="text" name="name"&

程序员小王的博客 5200

为什么html中文是乱码?html中文乱码怎么解决

很多程序员在开发网站的时候,都会遇到html文件出现乱码,那么,为什么html中文是乱码?html乱码怎么造成的?html中文乱码怎么解决呢,下面php高手为您解决这些问题。 打造全网web前端全栈资料库(总目录)看完学的更快,掌握的更加牢固,你值得拥有(持续更新) 一:为什么html中文是乱码 1.现在网页的编码有三种,gbk和utf-8,另外一种就是gb2312,不同的内容对应的编码也是不一样的,但是常见使用编码也就是gb2312与utf-8。 2.出现中文乱码可能一个重要的因素就是网页可能没有

lin123_00的博客 9万+

SpringMVC Controller 接收页面传递的中文参数出现乱码

在Controller中接收到的POST参数如果是中文的话,显示为乱码。已知客户端传过来时编码为UTF-8。 问题产生分析: spring MVC中默认的编码格式为“ISO-8859-1”,因此造成乱码。 简单的解决方式: New String(request.getParameter(“xxx”).getBytes(“iso-8859-1”),“utf-8”) 最好的解决方式: 在web.xml...

a9787206的博客 1965

jsp页面中文乱码问题

问题描述:JSP页面的中文乱码问题产生的原因非常之多,下面给出解决思路和解决办法。 解决思路:JSP的流程是:页面-&gt;Servlet-&gt;数据库-&gt;Servlet-&gt;页面,所以一旦出现页面乱码,我们需要一步一步的判断。 1、首先是判断从页面到Servlet后乱码是否已经出现,怎么判断?很简单,在Servlet中获取页面参数后打印输出看一下。 2、如果Servlet中取到...

高级CtrlCV工程师 1652

Servlet页面中文乱码问题

Servlet与页面之间的中文乱码问题1介绍很多时候,我们在写JavaEE的Servlet程序时,需要从前端页面获取数据,在控制台打印输出,或者在Servlet中设置名称,在其它页面显示或其他程序中输出等。如果数据带有中文字符,经常容易出现乱码问题。 现在对各种乱码的情况做一个归纳:2原因分析乱码产生的原因是在一方编码后,另一边解码时,解码的字符集和编码的不一致而导致的。可以简单理解为(各种字符需

kevin的博客 1万+
上一篇: Java IO中字节流和字符流的区别
下一篇: JavaTag web端执行过程
JavaEE_Flex
博客等级 码龄15年 0粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值