- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我读了the documentation of url_encode
.
是否有一张表格可以使用 url_encode
准确地告诉我哪个字符被编码成什么?
最佳答案
再培训局 url_encode
可以调整:
def url_encode(s)
s.to_s.dup.force_encoding("ASCII-8BIT").gsub(%r[^a-zA-Z0-9_\-.]/) {
sprintf("%%%02X", $&.unpack("C")[0])
}
end
到:
def url_encode(s, regex=%r[^a-zA-Z0-9_\-.]/)
s.to_s.dup.force_encoding("ASCII-8BIT").gsub(regex) {
sprintf("%%%02X", $&.unpack("C")[0])
}
end
url_encode('pop', /./)
=> "%70%6F%70"
此外,Ruby 的 CGI 和 URI 模块能够对 URL 进行编码,将受限字符转换为实体,所以不要忽视它们的产品。
例如,URL 参数的转义字符:
CGI.escape('http://www.example.com')
=> "http%3A%2F%2Fwww.example.com"
CGI.escape('<body><p>foo</p></body>')
=> "%3Cbody%3E%3Cp%3Efoo%3C%2Fp%3E%3C%2Fbody%3E"
Ruby CGI 的 escape
还使用一个小的正则表达式来确定应该在 URL 中转义哪些字符。这是文档中的方法定义:
def CGI::escape(string)
string.gsub(%r([^ a-zA-Z0-9_.-]+)/) do
'%' + $1.unpack('H2' * $1.bytesize).join('%').upcase
end.tr(' ', '+')
end
您还可以覆盖它并更改正则表达式,或者在您重新定义方法的过程中公开它以供您自己使用:
def CGI::escape(string, escape_regex=%r([^ a-zA-Z0-9_.-]+)/)
string.gsub(escape_regex) do
'%' + $1.unpack('H2' * $1.bytesize).join('%').upcase
end.tr(' ', '+')
end
URI.encode_www_form_component
也做了类似的编码,字符的唯一区别是 *
和 :
URI.encode_www_form_component('<p>foo</p>')
=> "%3Cp%3Efoo%3C%2Fp%3E"
而且,与覆盖 CGI::escape
类似,您可以覆盖 URI.encode_www_form_component
中的正则表达式:
def self.encode_www_form_component(str, regex=%r[^*\-.0-9A-Z_a-z]/)
str = str.to_s
if HTML5ASCIIINCOMPAT.include?(str.encoding)
str = str.encode(Encoding::UTF_8)
else
str = str.dup
end
str.force_encoding(Encoding::ASCII_8BIT)
str.gsub!(regex, TBLENCWWWCOMP_)
str.force_encoding(Encoding::US_ASCII)
end
关于ruby - Ruby 中的 url_encode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13338672/
我尝试使用 Ruby 的 url_encode(文档 here .) 它将 http://www.google.com 编码为 http%3A%2F%2Fwww.google.com。但事实证明我无法
我读了the documentation of url_encode . 是否有一张表格可以使用 url_encode 准确地告诉我哪个字符被编码成什么? 最佳答案 再培训局 url_encode可以
我目前正在使用 flask-wtf version 0.14.2 运行 conda 环境和 wtforms version 2.21我在解决这个问题时遇到了麻烦 ImportError: cannot
我在 python 中遇到 urllib.url_encode 问题。用一些代码解释赌注: >>> from urllib import urlencode >>> params = {'p' : '
我是一名优秀的程序员,十分优秀!