传智播客Java web学习,jsp中的中文乱码问题

java web 传智书城项目中文乱码问题的解决 关于一些在 java web 传智书城项目中一些问题的解决 1.中文乱码 引入JS文件造成的乱码问题 Filter造成的乱码问题 信息输出到数据库造成的乱码问题 起初遇到这些乱码问题的时候,还以为是一个方面的问题导致的乱码。但是在解决一个乱码,又碰到另一个乱码的时候,真的是感觉干啥啥不行,乱码第一名。 引入JS文件碰到的乱码,第一次遇见是在注册页面,源代码里在是一个 innerHTML中,源文件中发现之后,首先改了一下innerHTML 的值,发现英文可以正常显示。F12检查一下,结果发现引入的 阅读详情

   在前面的学习中已经遇到过多次中文乱码问题,不明白其产生的原因,确实是一个很令人头痛的问题,跟张老师学了这部分后,明白了其中的原理,学习了解决方法,以后再遇到这类问题就好解决了。
jsp中的中文乱码
  java虚拟机中的字符文本编码采用Unicode编码,而输入输出设备通常采用其他的字符集编码。java程序在从外设的字节输入流中读取文本和将文本写入到外设的字节输出流时都需要进行字符编码的转换。还有Java程序中的一些字符文本是从java源文件中编译过来的,也要进行字符编码的转换,因为java源文件可能采用多种字符集编码。jsp页面要翻译成Servlet去运行的,所以,jsp中也存在同样的中文乱码问题。主要有三种:输出响应正文时出现的中文乱码问题;读取浏览器参数传递信息时出现的中文乱码问题;读写其他输入输出设备时出现的中文乱码问题。
  更详细一点的总结一下jsp乱码的可能性,
   1,Servlet程序从请求消息中获取请求参数和从数据库,文件,键盘等外设中读取一个字符串时都要将底层的字节流转换成字符串,但转换过程中指定的字符集编码与外设所输入内容的字符集编码不一致。应用程序从外设读取字符串的过程通常是调用第三方提供的api来完成,如果第三方api将底层字节流数据按照iso8859-1转换成字符串返回,那么对底层设备中的gb2312编码的中文字符来说,返回的将不是正确的Unicode码,那么再输出时就不能正确的转换成中文字符,会出现乱码问题。解决方法就是将返回的有问题的字符串按ISO8859-1还原成底层设备的原始字节数据,再将这些字节数据按gb2312编码转换成其Unicode码的字符串形式。
 strNew=new String(strOld.getBytes("ISO8859-1"),"GB2312");
 2,Servlet程序将字符串输出到浏览器,文件,和数据库时都要将字符串转换成底层的字节流,但转换过程中指定的字符集编码与外设使用的字符集编码不一致。
3,jsp引擎将jsp源文件翻译成Servlet时,其选择的字符集编码和jsp源文件中使用的字符集编码不一致。
     jsp引擎默认采用utf-8编码,而jsp源文件可以采用各种字符集编码,因此这个过程需要进行字符编码转换。jsp引擎在进行这种转换时,必须要知道jsp源文件说使用的字符集编码,才能将源文件中的字符文本转换成正确的utf-8字符集编码。这里jsp源文件的字符编码最好设置成utf-8,这样里面的中文字符按utf-8转换就能转换成正确的Unicode编码。输出时就不会出现乱码问题。如果不指定jsp源文件的字符集编码,其默认为iso8859-1,jsp引擎就会把其中的中文字符当做iso8859-1字符集编码转换成utf-8字符集编码,肯定会出现乱码。jsp的字符集编码可以在page指令中设置,page指令的pageEncoding 属性要比contentType属性的优先权高,所以最好在pageEncoding属性中设置字符集编码为utf-8.还有更高优先权的设置,即在web应用程序的部署描述符文件中可以设置
 <jsp-config>
    <jsp-property-group>
          <url-pattern>/jsp/*</url-pattern>
           <page-encoding>utf-8<page-encoding>
    </jsp-property-group>
</jsp-config>
这样在jsp目录下的所有jsp文件的字符集编码都设置为了utf-8.
4,jsp引擎将jsp源文件翻译成Servlet时,其选择的字符集编码和servlet源文件中使用的字符集编码不一致。

总结上述jsp中文乱码问题的原因,解决的方法就是在jsp源文件中明确指定字符集编码为utf-8 或gb2312。

【JAVA EE#1】【传智书城·源码阅读】乱码+servlet生成web.xml问题+servlet获取同表单多按钮+结果集Result+Workbench无法修改+表单映射路径&重定向映射路径 1. servlet中解决的乱码问题。 编码方式主要集中在jsp文件头编码和servlet的Respond编码的设置上,两次编码缺一不可,respond接收到消息体会进行一次编码,之后的内容会传递给浏览器,其再通过网页文件头指定的格式进行解码显示,如果Respond编码出错,内容就乱码了,无论浏览器是否解码正确都无法还原消息体内容。 //设置httpServletResponse编码,特别在post请求中,传过来的数据非常必要进行编码 response.setCharacterEncoding("utf-8 阅读详情

相关推荐

JavaWeb 使用Filter实现统一全站编码(教材学习笔记)

1、编写form.jsp页面 在web-chapter08的WebContent目录中,编写一个form.jsp页面,该页面用于提交用户登陆的表单信息,代码如下: &lt;%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" import="java.util.*"%&gt; ...

来自师范的学渣 1371

JavaWeb网上图书商城完整项目--过滤器解决中文乱码

我们知道,如果是POST请求,我们需要调用request.setCharacterEncoding(“utf-8”)方法来设计编码;如果是GET请求,我们需要自己手动来处理编码问题。如果我们使用了EncodingFilter,那么就处理了POST和GET请求的编码问题 1、设置过滤器首先需要导入下面的jar包 itcast-tools-1.4.2.jar 这个jar包封装了下面的功能 ...

weixin_33845477的博客 360

ArcGIS符号库下载 | 制图规范、三调、1:1万地形图、土地利用总体规划图.....

最近整理了一些符号库 涉及的类型比较多 包含有三调的(二调的也加上去了),一些点线面符号库,1:1万地形图,1:5万土地利用,土地利用总体规划图

qq_43173805的博客 2万+

java jsp中文乱码怎么解决_解决Java Web项目中中文乱码的方法

Java具有简单,面向对象jsp传中文参数乱码,分布式,健壮性,安全性,平台独立性和可移植性jsp传中文参数乱码,多线程,动态性等特征. 以下是在为每个人选择的Java Web项目中解决中文乱码的方法. 欢迎阅读并参考.第一种情况: 调用jsp页面中文显示乱码问题描述: jsp页面是通过浏览器调用的,浏览器中显示的中文内容是乱码.解决方案: 首先在将文件内容保存到编辑器中时确认此jsp使用UTF-...

weixin_39983912的博客 1951

2024最新版Anaconda Navigator安装使用指南

本文简要介绍如何下载安装Anaconda Navigator最新版,以及如何使用Python内核搭载来完成应用程序开发。

jackson_lingua的博客 1万+

[代码开源]基于DistFlow的IEEE33和IEEE69节点最优潮流模型(OPF)实现与性能分析

本文详细介绍了基于DistFlow的IEEE33和IEEE69节点最优潮流模型(OPF)的实现与性能分析。通过代码开源,展示了如何从零搭建电力系统优化模型,解决配电网中的发电成本最小化问题。文章涵盖数据准备、模型实现细节、性能优化建议及常见问题解答,为电力系统研究者提供实用参考。

weixin_29103191的博客 709

传智播客Java web之 乱码问题

     不管是在写Servlet还是JSP应用程序,只要不是西欧ISO8859-1字符集编码,都将会遇到乱码问题。每当遇到乱码问题,如果不懂这些字符集的转换原理,调试起来是相当的困难。在JAVA WEB系列视频中,有几个章节都讲述了字符集的问题以及在实践中应该怎么解决乱码问题。    首先一个遇到乱码的问题就是请求参数。常遇到的当然是中文字符的乱码问题。请求参数是被浏览器经过URL编码才发送给服

JAVA专栏 608

GDI文字绘制和windows下opengl文字绘制小结

GDI绘制文字,要设置文字的属性,主要就是通过设置DC中的font对象来实现的。 font对象的创建可以由createfont()、createfontIndirect()来实现。 HFONT CreateFont( int nHeight, // height of font int nWidth, // average

T_W_S的专栏 5323

传智播客Java web之 JSP基础之JSP的原理与特性

     掌握servlet原理后,就会发现用servlet写web应用程序是一件很麻烦的事。虽然原理,思路清晰。但是代码比较复杂,特别是响应内容的生成方面。因此为了解决上述问题,JSP就产生了,它仍然是以servlet为基础的,最终JSP程序都要翻译成servlet来运行的。对于这一章,视频讲解有如下一些内容:JSP入门、JSP基本语法、JSP指令、out对象、pageContext对象、J

JAVA专栏 609

Unity物理引擎实战:从刚体重心到碰撞体,打造真实不倒翁交互

刚体(Rigidbody)是Unity物理系统的核心组件,它定义了游戏对象的物理属性,如质量、阻力和碰撞响应。其原理基于牛顿力学,通过物理引擎(如PhysX)实时计算物体的运动状态。在游戏开发中,刚体的价值在于能够模拟真实世界的物理行为,为玩家提供沉浸式的交互体验。碰撞体(Collider)则定义了物体的形状边界,用于检测与其他物体的接触。通过精细调整刚体的重心(Center of Mass)和碰撞体形状,开发者可以模拟出各种有趣的物理现象,例如低重心物体的动态平衡。这在休闲游戏、物理玩具模拟等场景中尤为实

weixin_33976326的博客 355

【微服务】Spring AI Alibaba Jmus 从部署到项目实战详解

Spring AI Alibaba Jmus 从部署到项目实战详解

congge 4190

JSP接收参数为乱码

在一个JSP页面传递一个中文参数时,在另一个页面接收出现乱码,这二个JSP文件都设置了: [code="jsp"] [/code] 并且也加了过滤器,通过各种方式转换都失败了,通过网上搜集,只要在JS中对中文参数进行编码就对了: [code="js"]encodeURI('中文');[/code] 在另外一个JSP中不需要在进行转换编码. 参考链接: 1 JSP带中文请求参数...

咫尺天涯 399

CREO图文教程:三维设计案例之矿泉水瓶实例图文教程之详细攻略

草绘,先绘制中心线,绘制底部宽度;对称标注:点击左端点,中心线,左端点,中键即可标注;给定高度;样条曲线绘制外形(双击样条曲线,点击下栏的控制模式(第一个按钮),再拉动控制样条曲线上的各个点)打勾即可得到三维实体。......

走向CTO之路 1934

传智播客Java培训---JSP内置对象、异常处理与乱码问题

JSP九大内置对象:       1.与Servlet有关的隐含的对象          (1)page  page对象对应Java中的关键字this,它代表当前JSP页面          (2)config  Config对象使用Web容器在初始化JSP之前得到JSP配置信息,config的作用域为整个页面,用法跟servletConfig相同       2.与Input/O

1083

【深度学习新浪潮】OpenClaw跟机器人行业有哪些很好的研究结合点?

OpenClaw正通过"AI大脑+机器人肢体"的深度融合,重新定义机器人与人类的交互方式和自主操作能力。近期ROSClaw框架发布、人形机器人集成和空间计算试验等进展,标志着OpenClaw已从概念验证阶段进入实际应用落地期,为机器人行业带来了自然语言控制普及化具身智能平民化和跨平台开发标准化三大变革机遇。

专注:太空算力、AI infra、异构调度、大模型成本工程 229

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

11月2日JSP培训日记

参照《深入Java Web开发内幕》,给大家过了一遍JSP中的更多语法细节,包括如下内容:out对象的工作原理,通过两个有趣的实验来帮助大家区分JSP页面的缓存与Servlet引擎缓存的区别。pageContext对象的详细讲解,特别是要注意其中的findAttribute方法,以及pushBody与popBody的工作原理,我想到了以后写SAX的例子时,可以参照自定义标签的pushBody与po...

网站开发初中级代码参考-转载 66

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

使用Filter实现统一编码

【任务目标】 在web开发中,经常会遇到中文乱码问题,按照我们前面所学的知识,解决乱码的通常做法都是在Servlet程序中设置编码方式,但是如果多个Servlet程序都需要设置编码方式,势必会书写大量的代码。为了解决上面的问题,可以在Filter中获取到的请求和响应消息进行编码,从而统一全站的编码方式。 【实现步骤】 1.编写form.jsp页面 在chapter08项目的WebContent目录中,编写一个form.jsp页面,该页面用于提交用户登陆的表单信息,代码如下: <%@ page lang

weixin_55680181的博客 2187

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

转:传智播客--OA(二)

1. 完成DepartmentDaoImpl各个方法的实现;这些都是固定方式; 唯一不同的是使用了HibernateDaoSupport.getHibernateTemplate()代替以前的 getSessionFactory().getCurrentSession()来完成增删改查工作; 使用它和事务管理的配置有关系; save(), update(), delete(), ...

xiangzhiyi的博客 234

(转)传智播客学习文件上传

[size=small]今天讲了文件的上传文件上传与下载工程。这在实际的应用中非常常见,首先上传文件需要解决一些问题主要包括一下几点: 1.上传文件怎么保证服务器的安全? 解决的方案:上传目录要禁止外界直接访问,一般的做法是把上传目录放到服务器的web-inf目录中,这个目录服务器是保护的,外界无法直接访问 [color=red]2.上传文件被覆盖的问题 服务器要为每一个上传文件生成一...

每天一篇文章 258

JAVA学习计划3

第一阶段:JAVA基础增强/Oracle+MySql数据库+JDBC开发技术+DAO封装核心技术课程java基础加强:增强for循环、可变参数、枚举、反射、内省、beanutils工具、注解、泛型、类加载、代理、装箱/拆箱、静态引用等Java新技术和高级技术。Oracle和MySql数据库:Oracle和MySql数据库基础管理、SQL 语言、PL/SQL语言、数据库设计范

氧气的技术博客 2322

传智播客——OA部门与员工管理

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 1.       ( 显示一组

395

JavaWeb快速入门--JSP(2)

JSP(Java Server Pages): java服务器端页面,一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码。

龙源IT 的博客 978

java线路

第一阶段:JAVA基础增强/Oracle+MySql数据库+JDBC开发技术+DAO封装 核心技术课程 java基础加强:增强for循环、可变参数、枚举、反射、内省、beanutils工具、注解、泛型、类加载、代理、装箱/拆箱、静态引用等Java新技术和高级技术。 Oracle和MySql数据库:Oracle和MySql数据库基础管理、SQL 语言、PL/SQL语言、数据库设计范式...

xiangxingchina 271

传智播客教你如何开始软件开发---快看看吧

 =============个人总结============【ITCAST  TMS】项目浏览:教育办公系统     项目[工具配置]a.工程编码设置b.文件编码和样式==========================    1    设置工程的默认编码为utf-8。2    代码样式设置java 、xml、html的每一行的宽度为13

JeffeHero的专栏 717

java路线

[size=medium] [color=red]第一阶段:JAVA基础增强/Oracle+MySql数据库+JDBC开发技术+DAO封装[/color] 核心技术课程 java基础加强:增强for循环、可变参数、枚举、反射、内省、beanutils工具、注解、泛型、类加载、代理、装箱/拆箱、静态引用等Java新技术和高级技术。 Oracle和MySql数据库:Oracle和MySql数...

技术交流 292
上一篇: 传智播客Java web学习,jsp标签
下一篇: 传智播客Java web学习-文件上传组件的应用
TuiRoger
博客等级 码龄19年 48粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值