解决web浏览器与servlet之间传输数据时出现的乱码问题

1、使用getParam等方法获取请求参数时遇到乱码

浏览器发送的请求参数使用的编码就是打开网页时使用的编码。如果服务器端获取到发过来的请求参数,默认使用ISO8859-1进行解码操作,中文一定会有乱码问题。

post和get方法提交的数据区分对待:

对于Post方式提交的数据,request.setCharacterEncoding("gb2312");来明确指定获取请求参数时使用编码。注意,只对post方式有效。

对于Get方式,就只能手动编解码 String newName = new String(name.getBytes("ISO8859-1"),"gb2312");先编码再解码,此种方法对Post方式同样有效。在tomcat的

server.xml中可以配置http连接器的URIEncoding可以指定服务器在获取请求参数时默认使用的编码,从而一劳永逸的决绝获取请求参数时的乱码问题。也可以指定

useBodyEncodingForURI参数,令request.setCharacterEncoding也对GET方式的请求起作用,但是因为发布环境通常不允许修改此属性因此尽量不要使用。get方式处理起来比较繁

琐,所以jsp中尽量使用post方式提交数据。

2、使用request输出数据到客户端时产生乱码

浏览器使用系统默认平台字节码打开服务器发送的数据,如果服务器端使用了非平台码去输出字符的字节数据,就需要明确的指定浏览器编码时所用的码表,以防止乱码问题。

response.addHeader("Content-type","text/html;charset=gb2312");  response.getWriter().write(“中文”);输出数据,这是一个字符流,response会将此字符进行转码操作后输

出到浏览器,这个过程默认使用ISO8859-1码表,而ISO8859-1中没有中文,于是转码过程中用?代替了中文,导致乱码问题。可以指定response在转码过程中使用的目标码表,防止乱

码。response.setCharcterEncoding("gb2312");其实response还提供了setContentType("text/html;charset=gb2312")方法,更加简便。

时间: 2024-11-10 13:35:09

解决web浏览器与servlet之间传输数据时出现的乱码问题的相关文章

浏览器和服务器之间传输数据

由于web系统采用http协议在浏览器和服务器之间传输数据,而http协议是一种无状态的协议,如何在不 同页面之间传递数据,可以有一下几种方式:   方式一:表单方式传递   表单传递参数是一种最简单,也是最基本的参数传递方式.注意:表单元素隐藏按钮的使用   方式二:带参数的url方式传递   带参数的url写法: url?参数名1=值1&参数名2=值2.   方式三:请求request对象   可以将数据绑定到request对象上,通过request对象getAttribute和setAtt

解决默写浏览器中点击input输入框时,placeholder的值不消失的方法

html中,placeholder作为input的一个属性,起到了在输入框中占位并提示的作用. 但是有一些浏览器,如chrome,当鼠标点击输入框时,placeholder的值不消失,只有输入数据才消失,会使前端用户体验大打折扣. 看了很多大神的方法,写了长长的js,看着有点吃力,就想到了下面这种最傻的方法解决了这个问题. html代码: <input type="text" placeholder="请输入"> 在其中只需加入两个简短的js即可: &l

解决跨浏览器下PHP下载文件名中的中文乱码问题

$ua = $_SERVER["HTTP_USER_AGENT"]; $filename = "中文 文件名.txt"; $encoded_filename = urlencode($filename); $encoded_filename = str_replace("+", "%20", $encoded_filename); header('Content-Type: application/octet-stream')

解如何利用 XML 和 JavaScript Object Notation 在 Ajax 客户端和 Java 服务器之间传输数据。

2006 年 6 月发表 Ajax 核心 API(即所谓的 XMLHttpRequest)的唯一用途就是发送 HTTP 请求,在 Web 浏览器与服务器之间进行数据交换.Web 页面中运行的 JavaScript 代码,可以使用 XMLHttpRequest 将该请求参数提交至服务器端脚本,例如 Servlet 或 JSP 页面.调用的 Servlet/JSP 将发回一个响应,其中包含了一般用于不需刷新整个页面即可更新用户查看内容的数据.此种方法在性能和可用性方面均体现出了独有的优势,因为这将降

MyEclipse使用教程:Linux Internal Web浏览器的兼容性

MyEclipse特性与Linux内部web浏览器的兼容性问题 Eclipse 3.3现在支持所有平台上的Mozilla浏览器(对Mozilla的迟滞无处不在),对于无处不在的Mozilla更多信息:详见bug#7923.对于MyEclipse的Linux用户来说,这就意味着附带的MyEclipse 6.0嵌入的Mozilla浏览器核心可以作为Eclipse平台的核心浏览器,随着附带的MyEclipse 6.0嵌入的Mozilla浏览器核心需要MyEclipse的特性如下: 需要嵌入MyEcli

http通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤

http通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤: (1)    建立TCP连接 在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络.HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80 (2)    Web

Web浏览器与Web服务器之间的通信过程

HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤:1:建立TCP连接 在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet, 即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络.HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之 后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80

HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤

1. 建立TCP连接 在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络.HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能进行更高层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80. 2. Web浏览器向Web服务器发送请求命令 一旦建立了TCP连接,Web浏览器就会向Web服务器发送

web请求:servlet处理请求

1 WEB服务器 |- Web Server |- Http Server |- Application Server |- Servlet Container |- CGI Server |- ...... 1.1 Http Server 运行在服务器之上,绑定服务器的IP地址并监听某一个tcp端口来接收并处理HTTP请求,浏览器就能够通过HTTP协议来获取服务器上的网页(HTML格式).文档(PDF格式).音频(MP4格式).视频(MOV格式)等等资源.一个HTTP Server关心的是HT