Ajax CSS jfreechart 百度 json 
encodeURI(encodeURI(Name))可以多次加密

最近做了一个功能,将产生的JfreeChart报表及附加的Summary导出到文章,也就是将这些内容加入到文章所在的表中,然后在页面显示。

问题在于,summary的内容是动态的,并且是样式比较复杂table,一大堆标签,如果在手动后台处理,需要转义N多诸如“”特殊字符,并且,summary的内容已经生成好,并不需要重新拿一遍数据,所以比较好的做法就是,用Ajax以post方式将innerHTML的内容提交到后台,那么,这里出现一个问题,由于innerHTML有标签,中文等,需要编码一下才可以,否则会报编码错误的。

JS部分代码:

Js代码  
  1. <span style="font-size: small;">function exportArticle(){
  2. var blogId=document.getElementById("blogId").value;
  3. var css=document.getElementById("css").value;
  4. var filename=document.getElementById("filename").value;
  5. // var filename1=document.getElementById("filename1").value;
  6. var start=document.getElementById("start").value;
  7. var end=document.getElementById("end").value;
  8. var strs=document.getElementById("weisummary").innerHTML;
  9. strs=encodeURIComponent(strs);
  10. var reporturl='<%=request.getContextPath()%>/SingularController?service=exportReportToarticle';
  11. var params='blogId='+blogId+'&css='+css+'&filename='+filename+'&types=1&start='+start+'&end='+end+'&constr='+strs;
  12. new Ajax.Request(
  13. reporturl,
  14. {
  15. method: 'post',
  16. parameters: params,
  17. encoding:  'UTF-8',
  18. requestHeaders: {Accept:'application/json'},
  19. onComplete: toreport
  20. });
  21. }
  22. function toreport(originalRequest){
  23. var  jsonObj = originalRequest.responseText.evalJSON(false);
  24. if(jsonObj== true){
  25. alert("<s:text key='blog.health.exportArticleSucc'/>");
  26. }
  27. }</span>
<span style="font-size:12px;">function exportArticle(){
var blogId=document.getElementById("blogId").value;
var css=document.getElementById("css").value;
var filename=document.getElementById("filename").value;
// var filename1=document.getElementById("filename1").value;
var start=document.getElementById("start").value;
var end=document.getElementById("end").value;
var strs=document.getElementById("weisummary").innerHTML;
strs=encodeURIComponent(strs);var reporturl='<%=request.getContextPath()%>/SingularController?service=exportReportToarticle';
var params='blogId='+blogId+'&css='+css+'&filename='+filename+'&types=1&start='+start+'&end='+end+'&constr='+strs;new Ajax.Request(  reporturl,{method: 'post',parameters: params,encoding:  'UTF-8',requestHeaders: {Accept:'application/json'}, onComplete: toreport              });}function toreport(originalRequest){var  jsonObj = originalRequest.responseText.evalJSON(false);if(jsonObj== true){alert("<s:text key='blog.health.exportArticleSucc'/>");}}</span>

之前,我用的是encodeURI编码innerHTML的内容,但是出现一个很奇怪的问题,我传的内容比较简单时可以传到service端,如果内容比较复杂就到不了service,后来调试时,发现以encodeURI编码后的内容,&,=等都没有编码,后来到网上查了一下,发现JS编码的方法有三种:

(以下是摘抄过来的,呵,因为已经写的很详细了,这里贴一下,原地址是:DIY部落(http://www.diybl.com/course/1_web/javascript/jsjs/200855/113679.html))

js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent

1、   传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。

2、   进行url跳转时可以整体使用encodeURI

例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21");

3、   js使用数据时可以使用escape

例如:搜藏中history纪录。

4、   escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。

最多使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支

持(form中的编码方式和当前页面编码方式相同)

escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z

encodeURI不编码字符有82个:!,#,$,&,'',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

encodeURIComponent不编码字符有71个:!, '',(,),*,-,.,_,~,0-9,a-z,A-Z

escape 方法
对 String 对象编码以便它们能在所有计算机上可读,

escape(charString)

必选项 charstring 参数是要编码的任意 String 对象或文字。

说明
escape 方法返回一个包含了 charstring 内容的字符串值( Unicode 格式)。所有空格、标点、重音符号以及其他非 ASCII 字符都用 %xx 编码代替,其中 xx 等于表示该字符

的十六进制数。例如,空格返回的是 "%20" 。

字符值大于 255 的以 %uxxxx 格式存储。

注意    escape 方法不能够用来对统一资源标示码 (URI) 进行编码。对其编码应使用 encodeURI 和encodeURIComponent 方法。

encodeURI 方法
将文本字符串编码为一个有效的统一资源标识符 (URI)。

encodeURI(URIString)

必选的 URIString 参数代表一个已编码的 URI。

说明
encodeURI 方法返回一个编码的 URI。如果您将编码结果传递给 decodeURI,那么将返回初始的字符串。encodeURI 方法不会对下列字符进行编码:":"、"/"、";" 和 "?"。请使

用 encodeURIComponent 方法对这些字符进行编码。

encodeURIComponent 方法
将文本字符串编码为一个统一资源标识符 (URI) 的一个有效组件。

encodeURIComponent(encodedURIString)

必选的 encodedURIString 参数代表一个已编码的 URI 组件。

说明
encodeURIComponent 方法返回一个已编码的 URI。如果您将编码结果传递给 decodeURIComponent,那么将返回初始的字符串。因为 encodeURIComponent 方法对所有的字符编码

,请注意,如果该字符串代表一个路径,例如 /folder1/folder2/default.html,其中的斜杠也将被编码。这样一来,当该编码结果被作为请求发送到 web 服务器时将是无效的。

如果字符串中包含不止一个 URI 组件,请使用 encodeURI 方法进行。

中文字符处理encodeURI编码与decodeURI解码相关推荐

  1. 查阅中文字符的Unicode编码

    jshell> Integer.toHexString('中')//返回一个中文字符的Unicode编码 $28 ==> "4e2d" jshell> '\u4e ...

  2. Android 中文字符转UTF-8编码

    import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; ...

  3. [oeasy]python0123_中文字符_文字编码_gb2312_激光照排技术_王选

    中文编码GB2312 回忆上次内容 上次回顾了 日韩各有 编码格式 日本 有假名 五十音 一字节 可以勉强放下 有日本汉字 字符数量超过20000+ 韩国 有谚文 数量超过500 一个字节 放不下 有 ...

  4. 网页编码与数据传递中的中文字符编码

    最近工作中遇到中文编码,中文参数传递,AJAX返回值包含中文乱码的问题,为此奋斗了一宿,有点心得,有点体会,总结如下,希望对迷惑于此中者有解惑之功效! 在网上一阵狠搜,编码函数的确是有,包括Javas ...

  5. Java的编码方式、单个char类型存储大部分中文字符、getBytes()、new String()的转换流程

    目录 一 编码种类 1.1 ASCII码 1.2 ISO8859-1编码 1.3 GBK编码 1.4 Unicode字符集 1.4.1 UTF-8编码 1.4.2 UTF-16编码 1.4.3 UTF ...

  6. tinyxml 读取文本节点_在Windows下使用TinyXML-2读取UTF-8编码包含中文字符的XML文件...

    TinyXML-2 是一个用 C++ 开发的小巧.高效的 XML 解析工具,它在 GitHub 网站上的链接为: https://github.com/leethomason/tinyxml2 .它的 ...

  7. Python之中文字符问题

    1.        在Python中使用中文 在Python中有两种默认的字符串:str和unicode.在Python中一定要注意区分"Unicode字符串"和"uni ...

  8. python中unicode函数_中文字符 unicode转utf-8函数 python实现

    unicode编码范围 00000000-0000007F的字符,用单个字节来表示: 00000080-000007FF的字符用两个字节表示 (中文的编码范围) 00000800-0000FFFF的字 ...

  9. java 中文解码_java使用URLDecoder和URLEncoder对中文字符进行编码和解码

    摘要: URLDecoder 和 URLEncoder 用于完成普通字符串 和 application/x-www-form-urlencoded MIME 字符串之间的相互转换.在本文中,我们以使用 ...

最新文章

  1. Android 实现闹钟功能
  2. [MySQL 5.1 体验]MySQL 事件调度器(Event Scheduler)
  3. Codeforces Round #528 (Div. 2, based on Technocup 2019 Elimination Round 4) C. Connect Three 【模拟】...
  4. springboot 接收小程序图片以及参数_常见的SpringBoot面试题一
  5. php点菜系统开题报告,点餐管理系统的设计与实现-开题报告
  6. 推荐几个机器学习算法及应用领域相关的中国大牛:
  7. mysql重命名数据表称方式_在MySQL中,使用()重命名数据表。_学小易找答案
  8. 前端学习(2887):如何短时间内实现v-for createApp解决方案
  9. 让Netty“榨干”你的CPU
  10. Pytorch可视化工具 —— TensorBoard
  11. 消除ie上的:为了有利于保护安全性,IE已限制此网页运行可以访问计算机的脚本或 ActiveX 控件...
  12. 决不允许AI杀人武器研发!马斯克领衔2400名科学家签署联名宣言
  13. 软件再快不如自带:找不到电脑文件?教你这 3 个Mac搜索技巧
  14. iic标准c语言,I2C总线之(三)---以C语言理解IIC
  15. 生信-记一次NCBI-R语言-淋巴癌突变与未突变基因的差异分析
  16. 无线wifi服务器,无线串口服务器,wifi转串口,网口转wifi,无线串口通讯模块-上海卓岚...
  17. Ubuntu安装lightdm重启后黑屏
  18. PWC-Net: CNNs for Optical Flow Using Pyramid, Warping, and Cost Volume
  19. 《牛客刷verilog》Part III Verilog企业真题
  20. Makefile学习之 all

热门文章

  1. 金博康拓优蓝铁虎安居宝安通旺龙晶创晶控大华门禁CPU梯控复制
  2. 2018年计算机应用基础离线作业,东北师范大学2018年春《计算机应用基础》离线作业答案.doc...
  3. python+tkinter一步步展示漂亮的棒棒糖和云朵
  4. PS加深减淡工具里的高光。阴影 中间调有什么区别?
  5. Typora Beta历史版本 (非收费版本)
  6. L1-039 古风排版 python实现
  7. 【苹果imessage虚拟机安装】除了警报,徽章,声音,JSON包仍然可用。
  8. 100亿!中国联通发起设立5G产业基金
  9. 什么样的电销话术可以让客户不反感,不挂断,不投诉,还可以成交
  10. vue-router的cdn使用,一篇解决百度少有的cdn引用方法