- 浏览: 1051704 次
- 性别:
- 来自: 郑州
文章分类
- 全部博客 (605)
- 数据挖掘 (22)
- spring (40)
- 工具使用 (39)
- java (137)
- JavaScript (40)
- webwork (12)
- web (120)
- 资源 (7)
- SSH (5)
- oracle (20)
- J2ME (1)
- 环境配置 (37)
- 项目管理 (29)
- mysql (14)
- struts (4)
- 项目总结 (27)
- ibatis学习 (33)
- 学习计划 (2)
- 缓存 (7)
- 重构 (3)
- Android (1)
- jquery (12)
- UML (3)
- 用户体验 (4)
- 习惯 (7)
- sakai (1)
- urlrewrite (4)
- rss (5)
- C plus plus (5)
- 算法 (5)
- 海量数据处理 (7)
- office(word、excel) (1)
- 面试题 (3)
- solr (8)
- 大数据 (2)
最新评论
-
hujin19861102:
截图看不见,最后一个webwrok的配置看不见
Ext+Webwork+Json 实现分页表格查询效果 -
蜗牛笔:
弱弱的问一句,要是分出来的词在词典中没有,那么两部分的pos- ...
ICTCLAS 中科院分词系统 -
weipeng1986:
授人予鱼不如授人予鱼,我想问你的是你是怎么总结的。比如第四种情 ...
JAVA中字符串连接效率的测试 -
xiaoqiang2008:
执行两次的原因是什么,好像楼主没弄清楚啊!是不是在web.xm ...
关于Spring中用quartz定时器在定时到达时同时执行两次的问题 -
Kent_Mu:
...
ibatis-dynamic的用法
谨防 url 传递参数未编码(转码)产生的陷阱
在最近的项目中,碰到些因为 url 传递参数时未编码(转码)所引起的一些“莫名其妙”的错误,特此记下来,以免大家再像我一样走弯路。
我们知道,web项目总少不了参数传递的情况,如 http://www.google.cn/search?hl=zh-CN&q=%E5%95%8A,这就带了hl 与 q 两个参数,并且 q 是经过编码的(中文为 “啊”)。但在项目中,我们有时候传递参数却会忘记对参数进行编码(解码、转码),这样,会产生什么样的陷阱呢?
1、公司原有的OA(asp开发,文件编码:gb2312)与刚开发的内部业务系统(asp.net开发,文件编码:uft-8)进行集成,登陆OA,将用户名写入cookie(cookies["user_name"]),然后在业务系统中读取此 cookie,死活都读取不到,为什么?文件编码不同,导致业务系统里面cookie的名称已经变成了 “user%5Fname”!
2、业务系统(文件编码:uft-8)内部调用外部的一个php文件(编码:gb2312)发送短信:http://sms.XXX.cn/index.php?controller=BoSends&action=sendSms&username=某公司&password=password&mobile=139********&content=Hello,也是一样发送不成功!看看php文件的编码,才知道是 gb2312,当username 和 password 传递过去的时候,系统里面找不到相关资料,因为username("某公司")已经发生改变了!
在这两种情况下,我们就必须对文件进行转码了:如2、HttpUtility.UrlEncode("某公司",System.Text.Encoding.GetEncoding("gb2312")),当然我们可以写一个方法:
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> /// <summary>
/// 指定编码
/// </summary>
/// <param name="str"></param>
/// <param name="codingType"></param>
/// <returns></returns>
public string StrEncoding(string str, string codingType)
{
return HttpUtility.UrlEncode(str, System.Text.Encoding.GetEncoding(codingType));
}
再有就是在系统内部页面传递参数进行编码:
3、老板很气愤:XXX,你过来,这个统计系统是你做的吗?
我:是的!有什么问题吗?
老板:怎么回事?这个链接明明有统计数据的,怎么查询它的详细数据就没有呢?连统计图也看不见!
我:我看下...
经检查发现:老板是正确的,那个链接确实有统计数据,但点击查看这个链接的详细数据却没有了! ???
回到办公桌前,赶紧再试那个链接 http://www.XXX.com/admins/DayChart.aspx?un=ABC&ul=http://p.yiqifa.com/servlet/handleClick?sid=a7e226f4bb8f1a18&pid=221&wid=232
这个链接需要传递两个参数:un 与 ul,其中,un=ABC ,ul=http://p.yiqifa.com/servlet/handleClick?sid=a7e226f4bb8f1a18,但在参数传递之后,ul 变成了什么?也许你已经发现了:ul=http://p.yiqifa.com/servlet/handleClick?sid=a7e226f4bb8f1a18&pid=221&wid=232。是的,ul 已经变成了 http://p.yiqifa.com/servlet/handleClick?sid=a7e226f4bb8f1a18 ,pid 与 wid 被当成了 DayChart.aspx 的参数了!
4、统计某页面所有的链接及图片点击,1分钟内重复点击不入库,采用cookie保存用户点击数据,静态页面采用脚本异步向服务器传递数据。在本机运行应用程序实现需求,但在服务器上就出现问题了:点击 N 多不同的链接,只会录入前两条数据!
难道是域名的问题?服务器的应用程序使用了域名,而本机还是localhost。于是修改了host文件,给本机模拟域名,问题重现了,本机和服务器出现的问题一模一样,只插入两条数据!
看看代码,考虑到对cookie的操作较特殊,于是每次点击将 Cookie 写入文本文件,再进行检查,检查发现:写入的cookie值与预期的不一样...
cookie需要写入客户端的,有可能是文件的编码产生的问题吗?嗯!于是在写入cookie之前,对字符串进行编码,获取cookie之后,再对 cookie 内的字符串进行解码。问题解决了,服务器上可以正常插入数据了...
但为什么采用域名会出现那样的错误呢???(期待...)
3、4采用的编码、解码:HttpUtility.UrlEncode(str) 、HttpUtility.UrlDecode(str)
另外附下:js脚本提交页面时,注意中文参数的传递 (escape(str))
SomeOne:啊???这个也附上来... 地球人都知道啊!
我: 哈哈...啰嗦下!
以上只是项目中遇到的编码问题,记录下来,希望对大家有所帮助,同时,不正确的地方希望大家告知,谢谢!
发表评论
-
fork/join框架
2017-03-09 11:03 498http://blog.csdn.net/ye1992/art ... -
protobuffer
2017-03-09 10:54 695http://blog.csdn.net/antgan/art ... -
整理上传代码容易忽略的注意事项
2013-08-31 11:28 1161每个公司都有自己的代码代码上传流程:如果打包发布的话,是不存 ... -
mysql版本升级引发的问题
2013-05-16 15:25 1655问题描述: 1. ibatis 中 mysql语 ... -
网站的记住密码功能设计
2013-02-27 19:09 1309http://greenyouyou.blog.163 ... -
大型网站架构演变之路
2013-02-27 19:08 1147http://www.cnblogs.com/ivanjack ... -
使用Filter统计Java(J2EE)的web程序http请求响应时间
2013-02-27 19:07 1389http://www.cnblogs.com/ivan ... -
java bean与xml相互转换
2013-02-06 10:27 2048最近在做的项目,在各个平台之间需要大量传输数据,且结构比较 ... -
java 反射
2013-01-14 18:21 830http://www.cnblogs.com/rollenh ... -
字符串替换
2012-12-17 11:17 1160高效的字符串模式替换实现效果如下 String str ... -
httpURLConnection获取网络数据:XML格式返回与Json格式返回
2012-12-15 16:57 149251.服务器端代码样例: public class ... -
利用Freemarker实现表到功能界面的一键生成
2012-11-22 18:03 1020利用Freemarker实现表到功能界面的一键生成 h ... -
ibatis in ##的问题
2012-11-02 13:25 854http://www.hake.cc/a/biancheng/ ... -
ibatis缓存强制刷新与命中率
2012-10-19 19:06 1393缓存强制刷新: // spring注入 private Sq ... -
eclipse 的一些设置
2012-08-16 22:06 17611. 控制台信息太多,程序跑完后只能保留最后的一部分之前的 ... -
jdk1.5 System.arraycopy与jdk1.6 中Arrays.copyOf()&Arrays.copyOfRange()
2012-08-16 21:56 3288在JDK1.5的类System类中有方法 ... -
Eclipse报Java heap space错误的解决方案
2012-08-16 16:43 12073当运行大数量的数据时: (1) 如果是java 应用程 ... -
求两个字符串的最大公共字符串
2012-08-10 20:41 1065http://blog.csdn.net/wangcj625/ ... -
ffmpeg 截取视频 播放中的图片
2012-06-19 09:14 1315http://www.cnblogs.com/live365w ... -
memcached 项目中的使用
2012-06-13 09:29 1067http://ljh2008.iteye.com/blog/6 ...
相关推荐
谨防信息时代的消费陷阱.pdf
在校学生应谨防掉入传销陷阱.docx
股指期货交易要谨防市盈率陷阱.pdf
文件标题指明了文档是关于“法务学习”,特别聚焦于“签合同要谨防8种合同陷阱”。因此,我们可以围绕这个话题,展开相关的知识点讲解。 知识点一:合同的基本概念 合同是具有法律效力的文件,用于明确双方或多方...
谨防网络低俗文化对未成年人的危害.pdf
"这样的问题旨在考察候选人的自我认知和应变能力,但如果不慎回答,可能会对自己产生负面影响。 其次,准备充分是避免陷阱的基础。研究公司文化、价值观和业务需求,以便在面试中展示自己如何适应和贡献。同时,...
自定义URL方案Cordova / PhoneGap插件通过这样的链接启动您的应用程序: mycoolapp://谨防: -此Apache Cordova问题导致Cordova-iOS 3.7.0出现问题:冷启动时未调用handleOpenURL函数。 使用高于或低于3.7.0的版本。...
员工福利系列模板-谨防年终奖发放的“雷区”.xls
同时,过于低廉的商品价格应引起警惕,谨防陷阱。 2. 诱骗个人信息猜密码: 骗子有时会要求买家提供大量个人信息,如姓名、地址、电话、身份证号等,然后利用这些信息猜测用户的账户密码。胡某的案例就是一个例子...
对于嵌入式系统和驱动开发,合理地使用volatile可以确保程序能正确地与硬件交互,但需谨防陷阱,避免不必要的优化导致的错误。因此,使用volatile时应遵循保守原则,除非完全理解其行为,否则尽量避免使用复杂的技巧...
谨防金融诈骗专题.ppt
谨防电信网络诈骗.ppt
标题“冬季谨防煤气中毒”涉及的是冬季常见的一种安全问题,即一氧化碳中毒,这在技术安全领域中尤其重要,因为技术安全不仅包括电子设备和网络的安全,也包括生活中的安全防范。描述中提到的事件是冬季由于一氧化碳...
半导体谨防资源错配.pdf
谨防电信诈骗活动总结.doc
谨防“养老床位”变相为“医疗床位” 本文主题是讨论“医养结合”的概念和实践,特别是在养老床位和医疗床位之间的界限问题。作者认为,医养结合应该是指把对失能老人的基本生活照料服务与医疗服务紧密衔接起来,而...
谨防黑客 保护路由器安全.pdf
在焊补油箱时,如果操作人员为求快捷而忽略了安全程序,如未清空油箱、未彻底清洗,残留的汽油蒸汽遇到火花,就可能导致爆炸或火灾。 其次,维修人员的不合规行为也是潜在的危险源。未能遵守防火规定,如未拆除蓄...
谨防“熟悉麻痹症”.docx