- 浏览: 2682759 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
80后的童年2:
深入浅出MongoDB应用实战开发网盘地址:https://p ...
MongoDB入门教程 -
shliujing:
楼主在不是精通java和php的前提下,请不要妄下结论。
PHP、CakePHP哪凉快哪呆着去 -
安静听歌:
希望可以一给一点点注释
MySQL存储过程之代码块、条件控制、迭代 -
qq287767957:
PHP是全宇宙最强的语言!
PHP、CakePHP哪凉快哪呆着去 -
rryymmoK:
深入浅出MongoDB应用实战开发百度网盘下载:链接:http ...
MongoDB入门教程
最近经常被URL、HTML、JavaScript的encode/escape弄晕
在这里列出Ruby/JavaScript中一些方法的说明:
1,CGI.escape/CGI.unescape做URL的encode和decode
参加Ruby库中的cgi.rb
2,CGI.escapeHTML/CGI.unescapeHTML做HTML的escape/unescape
参加Ruby库中的cgi.rb
3,html_escape/h做HTML的escape,url_encode/u做URL的encode
参加Ruby库中的erb.rb
ActionView::Base include了ERB::Util,所以可以直接在html.erb里调用h和u方法
4,JavaScript中escape/unescape做HTML的escape,encodeURI/decodeURI做URL的encode/decode
5,jQuery中的text(str)和html(str)
jQuery中text(str)方法给某个HTML Element设置文本内容,其中的文本如果包括HTML Tag或者<script>标签都会忽略而当作文本来看待
jQuery中html(str)方法给某个HTML Element设置html内容,其中的内容如果包括HTML Tag或者<script>标签则都会当作正常标签来执行
6,JavaScript实现h和uh方法来escape/unescape HTML
该方法用于JavaScript拼接HTML片段时防止&、<、>、"相关的问题
有了这些helper方法,基本上能满足99%的URL、HTML和JavaScript的escape和encode方面的需求
还有ruby中的URI.escape(也叫URI.encode),和CGI.escape有些区别。
感觉URI.escape比较靠谱...
在这里列出Ruby/JavaScript中一些方法的说明:
1,CGI.escape/CGI.unescape做URL的encode和decode
参加Ruby库中的cgi.rb
# URL-encode a string. # url_encoded_string = CGI::escape("'Stop!' said Fred") # # => "%27Stop%21%27+said+Fred" def CGI::escape(string) string.gsub(/([^ a-zA-Z0-9_.-]+)/n) do '%' + $1.unpack('H2' * $1.size).join('%').upcase end.tr(' ', '+') end # URL-decode a string. # string = CGI::unescape("%27Stop%21%27+said+Fred") # # => "'Stop!' said Fred" def CGI::unescape(string) string.tr('+', ' ').gsub(/((?:%[0-9a-fA-F]{2})+)/n) do [$1.delete('%')].pack('H*') end end
2,CGI.escapeHTML/CGI.unescapeHTML做HTML的escape/unescape
参加Ruby库中的cgi.rb
# Escape special characters in HTML, namely &\"<> # CGI::escapeHTML('Usage: foo "bar" <baz>') # # => "Usage: foo "bar" <baz>" def CGI::escapeHTML(string) string.gsub(/&/n, '&').gsub(/\"/n, '"').gsub(/>/n, '>').gsub(/</n, '<') end # Unescape a string that has been HTML-escaped # CGI::unescapeHTML("Usage: foo "bar" <baz>") # # => "Usage: foo \"bar\" <baz>" def CGI::unescapeHTML(string) string.gsub(/&(amp|quot|gt|lt|\#[0-9]+|\#x[0-9A-Fa-f]+);/n) do match = $1.dup case match when 'amp' then '&' when 'quot' then '"' when 'gt' then '>' when 'lt' then '<' when /\A#0*(\d+)\z/n then if Integer($1) < 256 Integer($1).chr else if Integer($1) < 65536 and ($KCODE[0] == ?u or $KCODE[0] == ?U) [Integer($1)].pack("U") else "&##{$1};" end end when /\A#x([0-9a-f]+)\z/ni then if $1.hex < 256 $1.hex.chr else if $1.hex < 65536 and ($KCODE[0] == ?u or $KCODE[0] == ?U) [$1.hex].pack("U") else "&#x#{$1};" end end else "&#{match};" end end end
3,html_escape/h做HTML的escape,url_encode/u做URL的encode
参加Ruby库中的erb.rb
ActionView::Base include了ERB::Util,所以可以直接在html.erb里调用h和u方法
def html_escape(s) s.to_s.gsub(/&/, "&").gsub(/\"/, """).gsub(/>/, ">").gsub(/</, "<") end alias h html_escape def url_encode(s) s.to_s.gsub(/[^a-zA-Z0-9_\-.]/n){ sprintf("%%%02X", $&.unpack("C")[0]) } end alias u url_encode
4,JavaScript中escape/unescape做HTML的escape,encodeURI/decodeURI做URL的encode/decode
var a = "<span>afd adf &&& <<< >>></span>" var b = escape(a) => "%3Cspan%3Eafd%20adf%20%26%26%26%20%3C%3C%3C%20%3E%3E%3E%3C/span%3E" var c = unescape(b) => "<span>afd adf &&& <<< >>></span>" var a = "http://www.test.com/haha hehe/" var b = encodeURI(a) => "http://www.test.com/haha%20hehe/" var c = decodeURI(b) => "http://www.test.com/haha hehe/"
5,jQuery中的text(str)和html(str)
jQuery中text(str)方法给某个HTML Element设置文本内容,其中的文本如果包括HTML Tag或者<script>标签都会忽略而当作文本来看待
jQuery中html(str)方法给某个HTML Element设置html内容,其中的内容如果包括HTML Tag或者<script>标签则都会当作正常标签来执行
6,JavaScript实现h和uh方法来escape/unescape HTML
该方法用于JavaScript拼接HTML片段时防止&、<、>、"相关的问题
function escapeHTML(str) { str = String(str).replace(/&/g, '&'). replace(/>/g, '>'). replace(/</g, '<'). replace(/"/g, '"'); return str; } function unescapeHTML(str) { str = String(str).replace(/>/g, '>'). replace(/</g, '<'). replace(/"/g, '"'). replace(/&/g, '&'); return str; } h = escapeHTML; uh = unescapeHTML;
有了这些helper方法,基本上能满足99%的URL、HTML和JavaScript的escape和encode方面的需求
评论
3 楼
Hooopo
2009-07-14
还有ruby中的URI.escape(也叫URI.encode),和CGI.escape有些区别。
def escape(str, unsafe = UNSAFE) unless unsafe.kind_of?(Regexp) # perhaps unsafe is String object unsafe = Regexp.new("[#{Regexp.quote(unsafe)}]", false, 'N') end str.gsub(unsafe) do |us| tmp = '' us.each_byte do |uc| tmp << sprintf('%%%02X', uc) end tmp end end
感觉URI.escape比较靠谱...
irb(main):013:0> require'uri' => false irb(main):014:0> require 'cgi' => false irb(main):015:0> url = "http://example.com/?a=\t\r&b=@@" => "http://example.com/?a=\t\r&b=@@" irb(main):016:0> URI.escape url => "http://example.com/?a=%09%0D&b=@@" irb(main):017:0> CGI.escape url => "http%3A%2F%2Fexample.com%2F%3Fa%3D%09%0D%26b%3D%40%40" irb(main):018:0>
2 楼
lyo1005
2009-05-27
1 楼
zuroc
2009-01-06
alert( $("<b/>").text("<>&").html() )
发表评论
-
用了TextMate才知道什么叫神级Editor
2011-03-09 04:51 57996一直用Eclipse作为开发Ruby和Java项目的IDE,但 ... -
Ruby使用OAuth登录新浪微博和豆瓣
2011-01-09 12:49 4464首先需要安装oauth这个gem包 gem install ... -
使用Passenger+nginx部署Rails
2010-12-28 15:12 50321. Install Passender gem instal ... -
markItUp+rdiscount搭建Rails下可视化Markdown编辑器
2010-12-21 17:48 5470markItUp是基于jQuery的可视化编辑器,支持Html ... -
Rails3 and MongoDB Quick Guide
2010-12-10 14:13 2760Install MongoDB Download: http: ... -
基于ruby-protobuf的rpc示例
2009-08-11 11:51 41521, 安装ruby-protobuf gem instal ... -
Ruby导出xls和csv的utf-8问题的解决
2009-02-04 15:05 6857数据库数据为utf-8格式,包括中文和拉丁文等等 导出文件xl ... -
各种排序的Ruby实现
2008-11-27 14:51 4007Θ(n^2) 1, Bubble sort def bu ... -
12月5日北京RoR活动!
2008-11-26 18:38 3023又是一年过去了,Rails在国内的发展势态良好,很多使用RoR ... -
Rails程序开发的最大问题是代码规范
2008-08-28 11:56 5580使用Rails开发大型复杂B2B应用一年了,这个项目目前开发人 ... -
Web开发大全:ROR版——推荐序
2008-07-09 00:39 2430来自http://www.beyondrails.com/bl ... -
深入ActionMailer,使用Sendmail发邮件
2008-07-03 11:41 3399来自: http://www.beyondrails.com/ ... -
Rails里如何结合ExceptionNotification配置gmail账户发邮件
2008-06-19 19:56 31021,安装ExceptionNotification rub ... -
使用coderay和railscasts样式进行代码高亮
2008-06-17 00:16 2399CodeRay是一个语法高亮的Ruby库,效率很不错。 Cod ... -
Capistrano试用
2008-06-16 19:05 19631,客户端机器安装Capistrano gem insta ... -
lighttpd真垃圾啊
2008-06-04 18:38 2548使用lighttpd+fcgi跑Rails程序,文件上传会si ... -
将gem变成plugin
2008-06-04 11:27 1809有什么样的需求就有什么样的对策 当vhost上的帐号没有ge ... -
在Rails里使用ReCaptcha添加验证码
2008-06-03 15:51 42721,去http://recaptcha.net/sign up ... -
Rails里给文件上传添加progress_bar
2008-05-27 17:00 2098文件上传很慢时,UI没有什么用户提示,这样让人很费解,所以我们 ... -
attachment_fu的一个bug
2008-05-27 16:25 1792上传文件的size经常结果为0,让人很费解 解决办法,atta ...
相关推荐
在这个例子中,`URLEncoder.encode()`用于URL编码,`StringEscapeUtils.escapeHtml4()`用于HTML转义,然后分别有对应的解码和unescape方法。运行这段代码,你会看到原始字符串如何经过编码和转义,以及如何恢复到...
JavaScript中的编码和转义函数主要有encodeURI、encodeURIComponent和escape这三个函数,它们用于处理URL和URI中的特殊字符。下面将详细介绍这三个函数的功能和使用场景。 首先,encodeURI函数的主要用途是编码整个...
JavaScript中的`encode`和`decode`是一组用于字符串编码解码的方法,它们在处理和传输数据时起到关键作用。在JavaScript中,常见的编码方法有`encodeURIComponent`、`decodeURIComponent`、`encodeURI`、`decodeURI`...
在JavaScript中,使用escape(String s)和unescape(String s)函数来进行URL的编码和解码。 此外,还可以使用自定义的函数来进行URL的编码,例如: ```javascript function URLencode(sStr){ return escape(sStr)....
JavaScript中也有类似的函数,如 `escape()`、`encodeURI()` 和 `encodeURIComponent()`。其中,`encodeURIComponent()` 与Java的 `URLEncoder.encode()` 类似,适用于大多数情况,因为它不会编码 `/`、`:`、`;`、`?...
在Java编程语言中,`escape`和`unescape`函数是处理字符串时常见的工具,尤其在处理HTML、JavaScript或URL编码时。这两个函数主要用于在字符串中转换特殊字符,确保数据在网络传输或存储时的正确性和安全性。下面...
`html5_manual.chm` 文件可能包含关于HTML5和JavaScript编码的详细信息,可以作为深入学习的参考资料。在处理字符串时,确保正确使用这些编码方法,以避免出现乱码、数据丢失或URL解析错误等问题,这对于构建健壮的...
由于互联网传输过程中可能会遇到只支持ASCII字符的数据通道,因此Base64编码被广泛应用于邮件传输、URL参数传递等领域。 #### Java中的Base64编码实现 在Java 8及以上版本中,标准库中提供了Base64的编解码支持,...
除了URL编码,还有“escape”这个概念,它与URL编码类似,但不是专门针对URL的。在JavaScript等编程语言中,`escape()`函数可以对字符串中的某些字符进行编码,以防止它们在特定上下文中引起解析问题。然而,`escape...
这种方式利用了JavaScript中的`escape`函数对参数进行编码,然后在服务器端使用`Server.UrlDecode`进行解码。 #### 五、全局设置与局部处理相结合 为了更全面地解决问题,还可以考虑在web.config文件中设置全局...
encode ( 'Node.js is awesome.' ) // returns Tm9kZS5qcyBpcyBhd2Vzb21lLg base64url . decode ( 'Tm9kZS5qcyBpcyBhd2Vzb21lLg' ) // returns Node.js is awesome. base64url . escape ( 'This+is/goingto+escape=...
这些恶意代码通常是HTML或客户端脚本语言(如JavaScript),但也可以是Java、VBScript、ActiveX、Flash或普通HTML。 XSS攻击通常发生在网页开发过程中遗留的漏洞被恶意利用的情况下。攻击者通过巧妙的方法注入恶意...
总结一下,JavaScript中的编码与解码涉及到了Unicode、UTF-8、UTF-16、URL编码、HTML实体编码等多个方面。理解并掌握这些知识对于编写兼容各种环境的Web应用至关重要。同时,`TextDecoder`和`TextEncoder`是现代...
它们都是早期JavaScript中用于处理URL字符串的方法,但已被 `encodeURI()` 和 `decodeURI()` 所取代。 **编码示例**: ```javascript // 使用escape()方法编码字符串 var encodedStr = escape("黑客防线"); console...
需要注意的是,使用escape/unescape方法进行编码和解码是JavaScript特有的,并不是Java标准库中的方法。因此,确保在JSP页面中获取到的是正确编码的字符串,且在客户端和服务器端的编码和解码方法要保持一致。 另外...
在JavaScript中,`escape()`和`unescape()`函数是用来处理字符串的编码和解码的。它们在处理URL编码和特定字符编码时非常有用。然而,PHP并没有直接等效的内置函数,但我们可以根据其功能编写相应的PHP实现。下面将...
- `escape()`:该函数可以将字符串编码为适用于URL的形式,但是它并不完全符合URL编码的标准,因此在现代浏览器中已经被废弃。 - `encodeURI()`:此函数会编码整个URI(包括协议部分),并且保留了特殊字符“!”、...
在JavaScript中,处理字符串编码时,有三个关键函数:`escape()`、`encodeURI()`和`encodeURIComponent()`。它们各自有不同的用途和特点,理解它们的区别对于正确处理URL和URI至关重要。 1. `escape()`函数: `...
### JavaScript中的Encode与Decode方法详解 #### 一、概述 在JavaScript中,处理URL编码是一项常见任务。通过编码,可以确保特殊字符能够安全地在网络上传输,并被正确解析。JavaScript提供了几种内置的方法来帮助...