如何使用ruby Base64解码utf8字符



正如标题所描述的,我该如何完成以下操作?

require 'base64'
text = 'éééé'
encode = Base64.encode64(text)
Base64.decode64(encode)
Result: éééé instead of xC3xA9xC3xA9

当您decode64时,您会返回一个具有BINARY(也称为ASCII-8BIT(编码的字符串:

Base64.decode64(encode).encoding
# => #<Encoding:ASCII-8BIT>

诀窍是强制应用特定的编码:

Base64.decode64(encode).force_encoding('UTF-8')
# => "éééé"

这假设您的字符串是有效的UTF-8,但可能不是,因此请谨慎使用。

只需使用Base64的encodedecode方法:

require 'base64'
=> true
Base64.encode64('aksdfjd')
=> "YWtzZGZqZA==n"
Base64.decode64 "YWtzZGZqZA==n"
=> "aksdfjd"

最新更新