java的web乱码问题
要想搞清楚如何解决编码首先要明白,在网络上传递数据的时候传递都是byte[]字节,这里我用write方法代表输出字节流,read代表读入输入流。众所周知java内部的编码是unicode编码,而最终计算机系统内部是转为机内码,也就是说所有的编码在计算机内部处理的时候都要转为机内码,计算机才识别它.而对于java最终显示到操作系统中的时候自然会自动转为机内码
那么当你想把字符串以一种编码格式传递的时候,就需要用到String类的getBytes方法将字符串转为相应编码的字节流。例如:
write(abc.getBytes("GB2312"));
这就是说把字符串abc从unicode编码转为GB2312
那么对于接收端必须这么接收:
String str=new String(read(),"GB2312");
即将传递过来的字节流视为GB2312编码转为unicode构造为字符串str
如果变为
String str=new String(read(),"utf-8");
那么自然会出现编码错误,因为发送的是GB2312编码,你却把它当做utf-8编码,自然就乱了。
造成乱码的基本原理是这样,实际jsp开发问题如下:(前台用html代码,还有数据库,我为了方便起见,都用java代码描述它们转码过程,让大家明白整个过程)
首先是jsp或者java文件本身编码,对于jdk来说它也是用unicode编码,那么我们写java文件的时候,如果使用的是操作系统的txt文件就会保存为操作系统的编码格式(有的系统允许指定相应编码保存文件)。当然一般程序中很少有中文,而英文基本上编码一致,而jdk编译为class文件的时候会转为unicode编码,虚拟机自然以unicode编码解析它,执行它。当然对于变量 属性方法 类命名我们一般使用英文,对于字符串常量中的中文我们可以使用java的转义字符\u+(4位的中文的unicode编码)表示,当然这样很麻烦,还要编码。
不过如果使用eclipse等软件就可以设置保存的文件编码,软件编译之前会帮助我们转码为unicode,导入其它java文件的时候也可以指定它的编码格式为保存它时用的编码格式.
不过在jsp中,jsp文件是在被使用的时候被解析,需要告诉服务器当前文件的编码格式,这个 就需要jsp的page指令的pageEncoding属性告诉服务器这个文件的编码格式
<%@ page language="java" pageEncoding="utf-8" %>
接下来是发送和接收数据.
首先是html提交表单,通常提交表单的时候字符集使用的是页面的字符集例如:
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">//这里指定页面字符集
</head>
<body>
<form name="form1" method="post" action="process.jsp">
<div align="center">
<input type="text" name="name">
<input type="submit" name="Submit" value="Submit">
</div>
</form>
</body>
</html>
在发送的时候,实际上是做了这样的操作:
write(abc.getBytes("GB2312"));
当然你也可以指定form表单提交时用的字符集:
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<form name="form1" method="post" action="process.jsp" accept-charset="GBK">//这里指定提交表单的字符集
<div align="center">
<input type="text" name="name">
<input type="submit" name="Submit" value="Submit">
</div>
</form>
</body>
</html>
相关推荐
java web 传智书城项目中文乱码问题的解决
关于一些在 java web 传智书城项目中一些问题的解决 1.中文乱码 引入JS文件造成的乱码问题 Filter造成的乱码问题 信息输出到数据库造成的乱码问题 起初遇到这些乱码问题的时候,还以为是一个方面的问题导致的乱码。但是在解决一个乱码,又碰到另一个乱码的时候,真的是感觉干啥啥不行,乱码第一名。 引入JS文件碰到的乱码,第一次遇见是在注册页面,源代码里在是一个 innerHTML中,源文件中发现之后,首先改了一下innerHTML 的值,发现英文可以正常显示。F12检查一下,结果发现引入的
【雷达信号处理】数字下变频(DDC)(Matlab代码实现)
内容概要:本文介绍了基于MATLAB的雷达信号处理中数字下变频(DDC)技术的实现方法,重点阐述了DDC在雷达接收机前端信号处理中的关键作用。通过将高频回波信号下变频至基带,便于后续进行数字化处理与目标信息提取。文中提供了完整的MATLAB代码实现,涵盖混频、低通滤波、抽取等核心步骤,帮助读者理解DDC的工作原理与工程实现细节。; 适合人群:具备一定信号与系统、数字信号处理基础知识,从事雷达、通信或电子工程相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于教学演示,加深对数字下变频原理的理解;②作为雷达或通信系统仿真项目的基础模块;③辅助科研人员快速搭建信号处理链路,进行算法验证与性能分析。; 阅读建议:建议结合数字信号处理教材中的混频、奈奎斯特采样及多速率信号处理理论进行学习,动手运行并调试代码,尝试调整参数(如本振频率、滤波器阶数、抽取因子)以观察对输出信号的影响,从而深入掌握DDC的设计要点与实际应用。
福建省福州新区矢量面数据-02坐标-geojson格式.json
福州新区区划面数据,geojson格式,02坐标
量化数据笔记第2篇:外盘期货历史高频tick数据涵盖主流交易所的活跃合约,以逐笔成交记录为主 字段通常包含品种代码、交易所、日期、精确到毫秒的时间戳、成交价格、成交量、持仓量变化,以及盘口买卖一档挂单
量化数据笔记第2篇:外盘期货历史高频tick数据涵盖主流交易所的活跃合约,以逐笔成交记录为主。字段通常包含品种代码、交易所、日期、精确到毫秒的时间戳、成交价格、成交量、持仓量变化,以及盘口买卖一档挂单价与挂单量。数据保留了原始行情序列,反映微观价格变动与流动性瞬时变化。 数据源:CMES金融数据库
【多机器人路径规划】基于优先级规划与Petri网融合的多机器人路径规划框架研究(Matlab代码实现)
内容概要:本文提出了一种基于优先级规划与Petri网融合的多机器人路径规划框架,旨在解决多机器人系统在共享环境中进行路径规划时可能出现的冲突与死锁问题。该方法结合了优先级规划的高效性与Petri网在建模并发与冲突方面的优势,通过建立形式化的Petri网模型对机器人运动状态进行精确描述,并引入优先级机制动态调整路径执行顺序,从而实现无冲突、无死锁的安全路径规划。研究通过Matlab代码实现了算法仿真,验证了该框架在复杂网格环境下的可行性与有效性,能够有效提升多机器人系统的运行效率与安全性。 适合人群:具备一定自动化、机器人或控制理论基础的科研人员,以及从事智能物流、智能制造、多智能体系统等相关方向的研究生与工程技术人员。 使用场景及目标:①应用于仓储机器人、AGV调度、自动化码头等多移动机器人协同作业场景;②解决多机器人路径规划中的死锁预防、冲突消解与资源竞争问题;③为开发高效、可靠的多智能体路径规划系统提供理论支持与实现参考。 阅读建议:此资源以Matlab代码实现为核心,建议读者在理解Petri网基本原理和优先级调度机制的基础上,结合提供的代码进行仿真实验,通过调整优先级规则与网络结构,深入掌握算法的设计思路与优化方法。


Web 开发
