Ruby,包编码(无法转换为UTF-8的ASCII-8BIT)

Bul*_*tor 1 ruby encoding utf-8

puts "C3A9".lines.to_a.pack('H*').encoding
Run Code Online (Sandbox Code Playgroud)

结果是

ASCII-8BIT
Run Code Online (Sandbox Code Playgroud)

但我更喜欢UTF-8中的这个文字.但

"C3A9".lines.to_a.pack('H*').encode("UTF-8")
Run Code Online (Sandbox Code Playgroud)

结果是

`encode': "\xC3" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)
Run Code Online (Sandbox Code Playgroud)

为什么?如何将其转换为UTF-8?

mu *_*ort 6

你这是错误的方式.如果你有这样的URI编码数据:

%C5%BBaba
Run Code Online (Sandbox Code Playgroud)

那你应该URI.unescape用来解码它:

1.9.2-head :004 > URI.unescape('%C5%BBaba')
 => "?aba"
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,则强制编码为UTF-8:

1.9.2-head :004 > URI.unescape('%C5%BBaba').force_encoding('utf-8')
 => "?aba"
Run Code Online (Sandbox Code Playgroud)