在 Ruby 中,我得到了 'ä' 的百分比编码
require 'cgi'
CGI.escape('ä')
=> "%C3%A4"
Run Code Online (Sandbox Code Playgroud)
与
'ä'.unpack('H2' * 'ä'.bytesize)
=> ["c3", "a4"]
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
第一个操作的逆向是什么?不应该是
["c3", "a4"].pack('H2' * 'ä'.bytesize)
=> "\xC3\xA4"
Run Code Online (Sandbox Code Playgroud)对于我的应用程序,我需要将 'ä' 编码为“%E4”,它是 'ä'.ord 的十六进制值。有没有针对它的 Ruby 方法?
在与Uri班级一起回答另一个问题时,我发现了一些对我来说很奇怪的东西:
考虑这两个Uris:
var u1 = new Uri("http://a.b:33/abc%2fdef/c?d=f");
var u2 = new Uri("foobar://a.b:33/abc%2fdef/c?d=f");
Run Code Online (Sandbox Code Playgroud)
他们的区别仅在于他们的计划.提供的标识符的所有其他元素都是相同的.
那么,为什么,当我转储Segments这些Uri实例的属性时,我是否看到以下输出u1:
/ abc/ def/ c
......但不同的输出u2?
/ abc%2fdef/ c
为什么不同方案的解析行为不同?
我想准备一个字符串,将其放入“post”请求中。不幸的是,我发现的所有对 url 进行编码的方法似乎都只对少数字符应用百分比编码。各种方法,例如。HttpUtility.UrlEncode,保留一些字符,例如 () 和 \xc2\xa7 不变。
当我在我的网络应用程序中输入一个表单时,这是由谷歌浏览器编码为%C3%AB的百分比.
当我使用PHP的urlencode('ë'); 这被编码为%EB.
为什么编码不同?
如何使用与PHP 4相同的编码进行编码?
关于这一点,网上有大量的条目和答案,但它们都与我需要的方向相反.从我的iTunes XML中,我有多种语言的数百%编码条目,我正在尝试使用XSLT样式表将其转换为Unicode文本.除了追踪每个角色并进行替换之外,是否还有我缺少的任何功能或过程?以下是我正在使用的各种示例的一小部分示例,第一行是XML字符串值,以下行是我尝试生成的基本文本,并输出到文本文件.
<string>/iTunes/iTunes%20Music/Droit%20devant/L'odysse%CC%81e.mp3</string>
Run Code Online (Sandbox Code Playgroud)
/ iTunes/iTunes音乐/ Droit devant/L'odyssée.mp3
<string>A%CC%80%20la%20Pe%CC%82che</string>
Run Code Online (Sandbox Code Playgroud)
ÀlaPêche
<string>%D0%97%D0%B0%D0%BF%D0%BE%D0%BC%D0%B8%D0%BD%D0%B0%D0%B8%CC%86</string>
Run Code Online (Sandbox Code Playgroud)
Запоминай
<string>%CE%9A%CE%BF%CC%81%CF%84%CF%83%CC%8C%CE%B1%CF%81%CE%B9</string>
Run Code Online (Sandbox Code Playgroud)
Κότσ̌αρι
对于某些人来说,最后一个可能无法正常显示,因为过度训练的hacek/caron.
提前感谢任何建议或线索
在查看了之前关于百分比编码的问题后,我很好奇哪种编码风格是正确的 - 关于百分比编码的维基百科文章暗示使用+而不是%20空格,同时仍然具有application/x-www-urlencoded内容类型。
这让我认为+vs.%20行为取决于 URL 的哪一部分被编码。路径段与查询字符串有何不同?本说明书的细节和参考将不胜感激。
注意:我假设非字母数字字符将通过 UTF-8 进行编码,因为字符的每个八位字节都会变成一个%XX字符串。如果我在这里错了(例如 latin-1 而不是 utf-8),请纠正我,但我对URL 不同部分的编码之间的差异更感兴趣。