`

[转]ruby 中的urlencode和urldecode

    博客分类:
  • Ruby
 
阅读更多
方法一:

def URLDecode(str)
str.gsub!(/%[a-fA-F0-9]{2}/) { |x| x = x[1..2].hex.chr }
end

def URLEncode(str)
str.gsub!(/[^\w$&\-+.,\/:;=?@]/) { |x| x = format("%%%x", x[0]) }
end

链接:http://www.2maomao.com/blog/2-ruby-cookies-en-de-code/

方法二:

采用ERB::Util.url_encode()

其中在url_encode 处理如下

def url_encode(s)
s.to_s.gsub(/[^a-zA-Z0-9_\-.]/n){ sprintf("%%%02X", $&.unpack("C")[0]) }
end

在正则表达式中:

[^a-zA-Z0-9_\-.]表示匹配非a-z 和A-Z 包括0-9 以及下划线和-中横线 的字符,

$& 全局变量,匹配到的字符串存放在 $& 变量中

uppack 是字符对象中的一个方法:是拆字符到数组的函数,

str.unpack( format ) -> anArray

Decodes str (which may contain binary data) according to the format string,

returning an array of each value extracted. 。。

其中C表示按字符拆。还有参数如下:

Directives for String#unpack

Format Function Returns

A String with trailing nulls and spaces removed. String

a String. String

B Extract bits from each character (msb first). String

b Extract bits from each character (lsb first). String

C Extract a character as an unsigned integer. Fixnum

c Extract a character as an integer. Fixnum

d Treat sizeof(double) characters as a native double. Float

E Treat sizeof(double) characters as a double in little-endian byte order. Float

e Treat sizeof(float) characters as a float in little-endian byte order. Float

f Treat sizeof(float) characters as a native float. Float

G Treat sizeof(double) characters as a double in network byte order. Float

g Treat sizeof(float) characters as a float in network byte order. Float

H Extract hex nibbles from each character (most significant first). String

h Extract hex nibbles from each character (least significant first). String

I Treat sizeof(int) 1 successive characters as an unsigned native integer. Integer

i Treat sizeof(int) 1 successive characters as a signed native integer. Integer

L Treat four1 successive characters as an unsigned native long integer. Integer

l Treat four1 successive characters as a signed native long integer. Integer

M Extract a quoted-printable string. String

m Extract a base64 encoded string. String 能把base64直接解出。

N Treat four characters as an unsigned long in network byte order. Fixnum

n Treat two characters as an unsigned short in network byte order. Fixnum

P Treat sizeof(char *) characters as a pointer, and return len characters from the referenced location. String

p Treat sizeof(char *) characters as a pointer to a null-terminated string. String

S Treat two1 successive characters as an unsigned short in native byte order. Fixnum

s Treat two1 successive characters as a signed short in native byte order. Fixnum

U Extract UTF-8 characters as unsigned integers. Integer

u Extract a UU-encoded string. String

V Treat four characters as an unsigned long in little-endian byte order. Fixnum

v Treat two characters as an unsigned short in little-endian byte order. Fixnum

X Skip backward one character. ---

x Skip forward one character. ---

Z String with trailing nulls removed. String

@ Skip to the offset given by the length argument.

其中参数带个上述格式,还可在格式后跟个数字or*,表示做几次拆解,

我靠,日本人搞的东西咋这么复杂呢,以为是unix啊,@#¥%!@#¥!,慢慢看吧。

自我感觉比c难学。不过他这一步就可以做好多事情,很好很强大啊。

转:http://www.cnitblog.com/kenlistian/archive/2008/03/25/41469.html
分享到:
评论

相关推荐

    urlencode urldecode实现

    `urlencode` 是一种编码方法,其目的是将非ASCII字符或者在URL中具有特殊含义的字符转换为可以在URL中安全传输的形式。例如,空格通常被转换为 `%20`,其他如逗号、引号等也需转换。这是因为URL本身只允许包含字母、...

    urlEncode or urlDecode

    `urlEncode` 是一个过程,它将URL中可能引起问题的字符转换为百分比编码,以确保URL的正确性和可读性。URLs只能包含ASCII字符集中的某些字符,如字母、数字、标点符号和某些保留字符。如果URL中包含非ASCII字符或者...

    PB 进制转换 url编码 urlencode urldecode 数组排序

    自己写的,可能有bug,请大家一块学习 环境为PB12 函数(及参数) 作用 arraysort 对一维数组进行排序 ...urldecode 将指定字符串以进行指定字符集url解码 urlencode 将指定字符串以进行指定字符集url编码 涨价了,哈哈

    Python3中urlencode和urldecode的用法详解

    今天小编就为大家分享一篇Python3中urlencode和urldecode的用法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    用JavaScript实现UrlEncode和UrlDecode的脚本代码

    在深入理解JavaScript实现UrlEncode和UrlDecode函数的过程中,我们需要理解几个关键点:首先,URL编码和解码在Web开发中是一种常见的需求,用于确保URL中的特殊字符被正确传输。其次,JavaScript提供了一些内置的...

    ASP中实现的URLEncode、URLDecode自定义函数__1.docx

    本文主要讨论如何在ASP中实现URLEncode和URLDecode这两个功能,以便正确地处理URL中的特殊字符和编码问题。 首先,URL编码(URLEncode)是为了在URL中传递非ASCII字符或特殊字符时避免产生错误。URL中不能包含某些...

    用JavaScript实现PHP的urldecode/urldecode函数

    这个是 utf-8版本的 js实现 php的 urlencode() 和 urldecode()两个函数的功能。 在传送cookie的时候 在 php端实现 url编码 但要用 js来解码cookie的时候 就出现汉字不能不能识别的问题 这个 js 很好的解决

    idea插件toolsMix(记录下班时间、实时中英文翻译、jsonView、urlEncode、urlDecode、timeFormate)源码

    idea插件toolsMix (记录下班时间、实时中英文翻译、jsonView、urlEncode、urlDecode、timeFormate) 解压toolsMix.zip,toolsMix目录下的zip包为打包好的插件包,可以直接安装

    用JavaScript实现PHP的urlencode与urldecode函数

    文章还指出,在JavaScript中,decodeURI函数并不能完全替代urldecode函数,因为decodeURI只能解码URL中的百分号编码序列,并不处理加号表示空格的情况,也不处理对特殊字符集以外的编码进行解码的需求。因此,需要...

    UrlEncodeUrlDecodeUrl解码Url编码工具

    相反,UrlDecode则是UrlEncode的逆过程,它将URL中编码的字符还原为原始形式。当接收到一个编码过的URL后,UrlDecode会识别并替换所有形如"%xy"的序列,将其转化为对应的ASCII字符。 UrlEncode和UrlDecode在实际...

    UrlEncodeDecode解码编码工具(双向)

    UrlEncode就是将URL中的特殊字符或非ASCII字符转换为百分号(%)加两位十六进制数的形式,以确保URL在传输过程中不会被误解或损坏。例如,空格会被转换为"%20"。 UrlDecode则是URL编码的逆过程,它将已经编码的URL...

    php自定义urlencode,urldecode函数实例

    原生的PHP提供了urlencode和urldecode这两个内置函数,用于对URL中的特殊字符进行编码和解码。然而,在某些特定的场景下,我们可能需要自定义这些函数的行为,以满足特定的编码或解码需求。本文将详细介绍如何在PHP...

    易语言URL编解码

    URLEncode是将URL中的非字母数字字符转换为ASCII码的百分号编码形式,如空格通常会被转换为"%20"。这样做的原因是URL中不能包含某些字符,如空格、引号等,它们需要被转义以防止被误解或破坏URL的结构。而URLDecode...

    网络传输文本,urlEncode和decode的实现。

    在实际应用中,`urlEncode`和`urlDecode`常用于构建和解析URL,特别是当URL中包含查询字符串时。例如,如果你要创建一个指向搜索引擎的链接,查询参数可能包含用户输入的数据,这些数据必须先编码再加入到URL中,以...

    ASP中实现的URLEncode、URLDecode自定义函数

    总体而言,自定义的URLEncode和URLDecode函数在ASP开发中提供了更大的灵活性,允许开发者根据实际情况对数据进行更精细的处理。在处理XML或HTML数据时尤其有用,因为它们可以避免不必要的编码,从而保持数据的完整性...

    php urlencode()与urldecode()函数字符编码原理详解

    PHP作为广泛使用的服务器端脚本语言,提供了两个非常重要的函数:urlencode() 和 urldecode(),用于处理URL中的非ASCII字符以及避免URL中的特殊字符带来的问题。 ### urlencode() 函数 urlencode() 函数的主要作用...

Global site tag (gtag.js) - Google Analytics