当前位置: 首页 > 编程日记 > 正文

window.open(url?param=+paramvalue) 服务端 乱码问题解决

window.open("url?param="+paramvalue)传递参数出现乱码,在客房端显示是正常的,可是到服务端就是乱码。

1. 利用一个js在客户端转码的函数,escape(str);但是传到服务端仍然是乱码,所以必须在服务端进行解码。

2. 服务端执行request.setCharacterEncoding("utf-8");或GBK,这样传过来的参数就不用转码也是中文了。

1
客户端:<br>window.open("WindowCustomerListAction?username="+encodeURIComponent(form1.name.value), "customerList""width=550,height=250,scrollbars=yes,resizable=yes,status=yes");

3. 常用的编码&解码方式:

1
2
3
4
5
6
7
一、客户端:<br>      param=encodeURI(encodeURI(param));
     //说明:TOMCAT下一般通过两次encodeURI;WEBLOGIC下一般通过一次encodeURI
     window.open(url+param);
   服务端:<br>      String param=URLDecoder.decode(param,"UTF-8");
二、客户端:param=encodeURI(param);
         window.open(url+param);
   服务端:String param=new String(param.getBytes( "iso-8859-1" ), "UTF-8" );

4. 附加两个比较专业的解释:

1
2
3
4
5
6
1. 服务器端(tomcat)是如何将数据获取到进行解码的:
   tomcat是先把数据用iso-8859-1进行解码.<br>  //对于get方法来说,tomcat获取数据的是ASCII范围内的请求头字符,其中的请求url里面带有参数数据,如果参数中有中文等特殊字符,那么目前还是URL encode后的%XY状态。
   //先停下,我们先说下开发人员一般获取数据的过程。通常大家都是request.getParameter("name")获取参数数据,我们在request对象或得的数据都是经过解码过的,而解码过程中程序里是无法指定,这里要说下有很多新手说用request.setCharacterEncoding("字符集")可以指定解码方式,其实是不可以的,看servlet的官方API说明有对此方法的解释:
    //Overrides the name of the character encoding used in the body of this request. This method must be called prior to reading request parameters or reading input using getReader().
    //可以看出对于get方法他是无能为力的。那么到底用什么编码方式解码数据的呢,这是tomcat的事情了,默认缺省用的是iso-8859-1,这样我们就能找到为什么get请求带中文参数为什么在服务器端得到乱码了,原因:
    //是在客户端一般都是用UTF-8或GBK对数据URLencode,这里用iso-8859-1方式URL decoder显然不行的.
1
2
3
4
5
6
7
8
9
2.  在客户端进行uriencode的必要性:
    对于get方法来说,都是把数据串联在请求的url后面作为参数,
如:http://localhost:8080/servlet?msg=abc
(很常见的一个乱码问题就要出现了,如果url中出现中文或其它特殊字符的话,如:http://localhost:8080/servlet?msg=杭州,服务器端容易得到乱码),url拼接完成后,浏览器会对url进行URL encode,然后发送给服务器,URL encode的过程就是把部分url做为字符,按照某种编码方式(如:utf-8,gbk等)编码成二进制的字节码,然后每个字节用一个包含3个字符的字符串 "%xy" 表示,其中xy为该字节的两位十六进制表示形式。
    我这里说的可能不清楚,具体介绍可以看下java.net.URLEncoder类的介绍在这里。了解了URL encode的过程,我们能看到2个很重要的问题
    //第一:需要URL encode的字符一般都是非ASCII的字符(笼统的讲),再通俗的讲就是除了英文字母以外的文字(如:中文,日文等)都要进行URL encode,所以对于我们来说,都是英文字母的url不会出现服务器得到乱码问题,出现乱码都是url里面带了中文或特殊字符造成的;
    //第二:URL encode到底按照那种编码方式对字符编码?这里就是浏览器的事情了,而且不同的浏览器有不同的做法,中文版的浏览器一般会默认的使用GBK,通过设置浏览器也可以使用UTF-8,可能不同的用户就有不同的浏览器设置,也就造成不同的编码方式,所以很多网站的做法都是先把url里面的中文或特殊字符用javascript做URL encode,然后再拼接url提交数据,也就是替浏览器做了URL encode,好处就是网站可以统一get方法提交数据的编码方式。
    完成了URL encode,那么现在的url就成了ASCII范围内的字符了,然后以iso-8859-1的编码方式转换成二进制随着请求头一起发送出去。这里想多说几句的是,对于get方法来说,没有请求实体,含有数据的url都在请求头里面,之所以用URL encode,我个人觉的原因是:对于请求头来说最终都是要用iso-8859-1编码方式编码成二进制的101010.....的纯数据在互联网上传送,如果直接将含有中文等特殊字符做iso-8859-1编码会丢失信息。
   //所以先做URL encode是有必要的。

本文转自二郎三郎博客园博客,原文链接:http://www.cnblogs.com/haore147/p/3617904.html,如需转载请自行联系原作者

相关文章:

Matlab编程与数据类型 -- 数据类型概述

本微信图文详细介绍了Matlab中的数据类型&#xff0c;数值型和逻辑型举例介绍&#xff0c;其它类型在相应图文进行介绍。

初识mysql数据字段属性_初识mysql

# 经典sql语句 创建数据库- CREATE DATABASE database_name; 删除数据库- DROP DATABASE database_name; 创建备份数据库- USE masterEXEC sp_addupdevice disk,testBack ,c:\xxx\xxx.dat 开始备份- BACKUP DATABASE pubs TO testBack;--- 创建表- 创建新表 create table tab_n…

ceph存储引擎bluestore解析

原文链接&#xff1a;http://www.sysnote.org/2016/08/19/ceph-bluestore/ ceph后端支持多种存储引擎&#xff0c;以插件式的方式来进行管理使用&#xff0c;目前支持filestore&#xff0c;kvstore&#xff0c;memstore以及最新的bluestore&#xff0c;目前默认使用的filestor…

Matlab编程与数据类型 -- 字符型数组

本微信图文详细介绍了Matlab中的字符串类型。

最近想做个音乐共享的软件

准备分如下几部分&#xff1a; 1.配置文件xml读写 2.播放器部分&#xff1a;开始准备用mediaplay做&#xff0c;发现有个开源的播放器&#xff0c;可以考虑 3.网络部分&#xff1a;主要是种子搜索和更新 准备召唤有兴趣的达人一起开发转载于:https://www.cnblogs.com/donneymin…

精通mysql_《深入精通Mysql(五)》实战:Mysql实现主从复制

深入精通Mysql系列其他文章推荐&#xff1a;一、前言随着应用业务数据不断的增大&#xff0c;应用的响应速度不断下降&#xff0c;在检测过程中我们不难发现大多数的请求都是查询操作。此时&#xff0c;我们可以将数据库扩展成主从复制模式&#xff0c;将读操作和写操作分离开来…

一个开发团队、软件公司,团队工作氛围很重要,没有好氛围难出好产品、好项目...

接触软件行业很多年有些年头了&#xff0c;展望过去的岁月&#xff0c;总想写点儿东西&#xff0c;总结总结&#xff0c;我也不怕拍砖了&#xff0c;曾经也换过很多公司、跳过很多槽&#xff0c;现在想想&#xff0c;总结出来&#xff1a;“天下的乌鸦是一样黑的”&#xff0c;…

Matlab编程与数据类型 -- 奇数阶魔方矩阵的编程

本微信图文详细介绍了利用Matlab实现奇数阶魔方矩阵的编程。

Apache Hive 快速入门 (CentOS 7.3 + Hadoop-2.8 + Hive-2.1.1)

2019独角兽企业重金招聘Python工程师标准>>> 本文节选自《Netkiller Database 手札》 第 63 章 Apache Hive 目录 63.1. 安装 Apache Hive 63.1.1. MySQL 63.1.2. Hadoop 63.1.3. Hive 63.1.4. 启动 Hive 63.1.5. 访问 Hive 63.2. 管理 Hive 63.2.1. 表管理 63.2.1.…

mysql的profile_Mysql分析-profile详解

一。前言当我们要对某一条sql的性能进行分析时&#xff0c;可以使用它。Profiling是从 mysql5.0.3版本以后才开放的。启动profile之后&#xff0c;所有查询包括错误的语句都会记录在内。关闭会话或者set profiling0 就关闭了。(如果将profiling_history_size参数设置为0&#x…

2003網域升級到2008網域以及遷移DNS

2003網域升級到2008網域以及遷移DNS 如圖這是我們現在的拓撲&#xff0c;cc從現用的LCS2008網域升級到2008網域&#xff0c;並一步步截圖給大家示範說明。隨便抓了臺虛擬機&#xff0c;是以前做LCS試驗用的&#xff0c;現在不用了&#xff0c;正好給大家示範2003升級到2008網域…

FPGA管脚约束

Edit → language templates &#xff1a; 打开即可查看基本语法。 一、xilinx中的约束文件 1、约束的分类 利用FPGA进行系统设计常用的约束主要分为3类。 &#xff08;1&#xff09;时序约束&#xff1a;主要用于规范设计的时序行为&#xff0c;表达设计者期望满足的时序条件&…

Matlab数据的可视化 -- 线性图函数plot

本篇微信图文主要介绍Matlab数据可视化方面的内容。

日志文件和mysql同步到kafka_logstash_output_kafka:Mysql同步Kafka深入详解

0、题记实际业务场景中&#xff0c;会遇到基础数据存在Mysql中&#xff0c;实时写入数据量比较大的情景。迁移至kafka是一种比较好的业务选型方案。而mysql写入kafka的选型方案有&#xff1a;方案一&#xff1a;logstash_output_kafka 插件。方案二&#xff1a;kafka_connector…

TPYBoard自制微信远程智能温湿度计

2019独角兽企业重金招聘Python工程师标准>>> 智能时代一夜间什么都能远程了。创业者想着如何做智能产品&#xff0c;如何做远程控制。DIY爱好者也想着如何自制各种奇妙的工具。这里和大家一起学习制作一款廉价的智能温湿度计。说它廉价是因为共计花费不过40元&#…

Matlab数据的可视化 -- 简易线性函数图

本篇微信图文主要介绍Matlab数据可视化方面的内容。

浏览器tab关闭事件_Python--使用Pyqt5实现简易浏览器(最新版本测试过)

Python--使用Pyqt5实现简易浏览器(最新版本测试过)博客说明文章所涉及的资料来自互联网整理和个人总结&#xff0c;意在于个人学习和经验汇总&#xff0c;如有什么地方侵权&#xff0c;请联系本人删除&#xff0c;谢谢&#xff01;准备环境首先我们需要的是我们的开发环境&…

JS 中 URL 编码的问题.

URL 编码 为什么要对 URL 编码 1. 避免解析错误 我们的 queryString 的形式是使用 ?开始, keyvalue 传递参数, key-value pairs 之间使用 & 连接.比如: ?postid5038412&t1450591802326服务器会 根据 & 解析 key-value pairs 根据 解析 key,value 那么如果 key或…

通用权限管理模块系列——需求分析——列举需求

以RBAC为理论基础 以低耦合为设计原则 我们计划设计一个独立的权限模块 碰到一些难题&#xff0c;后面另外开文章来讨论 本文主要是列举目前收集到的权限方面的需求信息&#xff0c;如果各位有能提供的用例&#xff0c;请不吝赐教。 各种需求都是从网络或零碎项目里提取的&…

Matlab数据的可视化 -- 散点图

本篇微信图文主要介绍Matlab数据可视化方面的内容。scatter

koa连接mysql_CentOS 环境 Node + Koa2 连接 MySQL (ECS系列三)

Koa 搭建服务新建一个文件夹 koa_server&#xff0c;进入后cnpm i -S koa会生成 node_modules 依赖包&#xff0c;以及 package.json创建文件 server.js&#xff0c;并写入const Koa require(koa);const app new Koa();app.use( async ( ctx ) > {ctx.body hello koa2})a…

Python CRC32 文件校验

binascii.crc32(s [,crc])返回CRC32校验。参数crc指定初始值用于循环。例如&#xff1a;Code>>> import binascii>>> crc binascii.crc32(spam)>>> binascii.crc32( and eggs, crc)739139840>>> binascii.crc32(spam and eggs)739139840C…

国家智慧城市战略实施 保温材料等建材万亿市场待挖掘

近年来&#xff0c;国家多部委联合发布《国家新型城镇化规划(2014—2020)》《关于促进智慧城市健康发展的指导意见》&#xff0c;提出到2020年建成一批特色鲜明的智慧城市。国家智慧城市建设与发展上升为国家战略。2014年中国智慧城市的市场规模达到800多亿元&#xff0c;其中不…

Matlab数据的可视化 -- 极坐标图及其与直角坐标图的转换

本篇微信图文主要介绍Matlab数据可视化方面的内容。polar、pol2cart、cart2pol

mysql 主从复制 性能_zabbix监控mysql各项性能,主从复制

######################################################监控mysql(默认监控模板不能用&#xff0c;再agentd.conf开启自定义key&#xff0c;自己编写脚本)在zabbix_agentd.conf尾部添加(注意相关文件路径&#xff0c;以及脚本权限等问题)vim zabbix_agentd.confUserParameter…

SQL Server基础知识之:设计和实现视图

设计和实现视图可谓是数据库物理设计中的一个非常重要的步骤。从一般意义上说&#xff0c;设计和实现视图应该遵循下面的一些建议和原则。 以下内容摘在文档&#xff0c;我对某些重点进行了补充说明&#xff08;红色部分&#xff09; 只能在当前数据库中创建视图。 但是&#x…

Matlab数据的可视化 -- 条形图

本篇微信图文主要介绍Matlab数据可视化方面的内容。bar、barh

全球SDN测试认证中心发布OpenDaylight测试报告

随着软件定义网络(Software Defined Network, SDN)商业部署速度地加快,关乎整个SDN 网络性能表现的控制平面核心组件——SDN 控制器也越来越成为网络用户关心的焦点。日前&#xff0c;天地互连-全球SDN测试认证中心&#xff08;SDNCTC&#xff0c;www.sdnctc.com&#xff09;正…

mysql可以做日期处理吗_mysql可以做日期处理吗

最近一个项目&#xff0c;需要写很多的sql语句。涉及到很多与时间相关的处理&#xff0c;现在做一下简单的总结。1.时间格式&#xff1a;在这个项目中&#xff0c;或许是由不同的人建立的数据库表结构吧&#xff0c;对时间的格式步统一&#xff0c;有的表中存储的long类型的时间…

大型网站采用什么系统架构保证性能稳定性

from http://www.bobd.cn/design/web/Theory/200904/31145.html 千万级的注册用户&#xff0c;千万级的帖子&#xff0c;nTB级的附件&#xff0c;还有巨大的日访问量&#xff0c;大型网站采用什么系统架构保证性能和稳定性&#xff1f; 首先讨论一下大型网站需要注意和考虑的问…