Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ruby中的URL编码_Ruby_Url Encoding - Fatal编程技术网

ruby中的URL编码

ruby中的URL编码,ruby,url-encoding,Ruby,Url Encoding,我有一段代码: temp = "Cancel" puts CGI::escape(words[1]) puts "\n" puts CGI::escape(temp) puts "\n" puts words[1] puts "\n" puts temp puts "\n" 我的输出是: %00C%00a%00n%00c%00e%00l%00 Cancel Cancel Cancel 我认为公平的假设是,这里的问题是我设置单词数组的方式。然而,我想知道这是否是一种常见的行为,有解决办法

我有一段代码:

temp = "Cancel"
puts CGI::escape(words[1])
puts "\n"
puts CGI::escape(temp)
puts "\n"
puts words[1]
puts "\n"
puts temp
puts "\n"
我的输出是:

%00C%00a%00n%00c%00e%00l%00

Cancel

Cancel

Cancel
我认为公平的假设是,这里的问题是我设置单词数组的方式。然而,我想知道这是否是一种常见的行为,有解决办法吗?如果不是,我做错了什么会导致这种情况


我的单词数组是通过从文件中读取数据,然后分割每一行并提取我需要的信息来设置的,所以它并不太复杂。

字符串中有NUL字节<代码>放置只是忽略它们

1.9.2p290 :016 > puts "Fo\0oooo"
Fooooo
 => nil
使用inspect,您可以看到:

1.9.2p290 :017 > puts "Fo\0oooo".inspect
"Fo\u0000oooo"
 => nil 
这里是
CGI::escape的输出

1.9.2p290 :018 > puts CGI::escape("Fooo\0ooo")
Fooo%00ooo
 => nil
编辑:

快速而肮脏的解决方案是将其移除:

"Fooooo\0ooo".gsub(/\0/, "")
 => "Foooooooo"

但是,由于每个字符前面都有NUL字节,因此最好检查代码以读取文件。如果您提供代码,就更容易找到解决方案。

字符串中有NUL字节<代码>放置
只是忽略它们

1.9.2p290 :016 > puts "Fo\0oooo"
Fooooo
 => nil
使用inspect,您可以看到:

1.9.2p290 :017 > puts "Fo\0oooo".inspect
"Fo\u0000oooo"
 => nil 
这里是
CGI::escape的输出

1.9.2p290 :018 > puts CGI::escape("Fooo\0ooo")
Fooo%00ooo
 => nil
编辑:

快速而肮脏的解决方案是将其移除:

"Fooooo\0ooo".gsub(/\0/, "")
 => "Foooooooo"

但是,由于每个字符前面都有NUL字节,因此最好检查代码以读取文件。如果您提供代码,则更容易找到解决方案。

您的字符串是否采用16位编码?@muistooshort表示同意。它有UTF-16的味道。你的字符串可能是16位编码吗?@muistooshort,同意。它有UTF-16的味道。一个更好的解决方案是确定文件是否为UTF-16,如果是,在读取之前打开它。我写道:
但是由于每个字符前面都有NUL字节,所以最好检查代码以读取文件。
,这包括检查编码,不是吗?我尝试以UTF-16BE和UTF-16LE两种格式打开文件,但这两种格式都会导致以下错误:
ASCII不兼容编码需要binmode(ArgumentError)
。以二进制方式打开显然没有多大帮助,所以有什么想法吗?一个更好的解决方案是确定文件是否为UTF-16,如果是,那么在读取之前就这样打开它。我写道:
但是由于每个字符前面都有NUL字节,所以最好检查代码以读取文件。
,这包括检查编码,不是吗?我尝试以UTF-16BE和UTF-16LE两种格式打开文件,但这两种格式都会导致以下错误:
ASCII不兼容编码需要binmode(ArgumentError)
。以二进制形式打开显然没有多大帮助那么有什么想法吗?