Ruby 将字符串转换为实际UTF-8字符
示例文件包含以下内容。 [\u042D\u0440\u044B\u0433\u044D\u0436\u044D\u044D。\n] 我想用实际的utf-8字符替换\u[a-zA-Z0-9]字符。 应该怎么做Ruby 将字符串转换为实际UTF-8字符,ruby,utf-8,Ruby,Utf 8,示例文件包含以下内容。 [\u042D\u0440\u044B\u0433\u044D\u0436\u044D\u044D。\n] 我想用实际的utf-8字符替换\u[a-zA-Z0-9]字符。 应该怎么做 File.new("mnosis.xml").each_line do |line| re = /\\u[0-9a-fA-F]{4}/ new_str = line.gsub(re) {|match| puts match[0..1] + '#{' + match[2..5] + '
File.new("mnosis.xml").each_line do |line|
re = /\\u[0-9a-fA-F]{4}/
new_str = line.gsub(re) {|match| puts match[0..1] + '#{' + match[2..5] + '}' }
puts new_str
end
\u字符是真正的UTF-8字符。\u是一种表达它们的方式,可以在非UTF-8编辑器中使用。Ruby认为\u和实际字符是相同的。这些\u字符是真正的UTF-8字符。\u是一种表达它们的方式,可以在非UTF-8编辑器中使用。Ruby看到的\u和实际字符是一样的。可以做到这一点:
ruby-1.9.2 > str = '\u042D\u0440\u044B\u0433\u044D\u0436\u044D\u044D.'
=> "\\u042D\\u0440\\u044B\\u0433\\u044D\\u0436\\u044D\\u044D."
ruby-1.9.2 > str_to_eval = "\"#{str}\""
=> "\"\\u042D\\u0440\\u044B\\u0433\\u044D\\u0436\\u044D\\u044D.\""
ruby-1.9.2 > res = eval(str_to_eval)
=> "Эрыгэжээ."
你能做到这一点:
ruby-1.9.2 > str = '\u042D\u0440\u044B\u0433\u044D\u0436\u044D\u044D.'
=> "\\u042D\\u0440\\u044B\\u0433\\u044D\\u0436\\u044D\\u044D."
ruby-1.9.2 > str_to_eval = "\"#{str}\""
=> "\"\\u042D\\u0440\\u044B\\u0433\\u044D\\u0436\\u044D\\u044D.\""
ruby-1.9.2 > res = eval(str_to_eval)
=> "Эрыгэжээ."
你使用什么版本的ruby?您的意思是文件包含文本\u042D\u0440\u044B\u0433\u044D\u0436\u044D\u044D,还是实际上文件包含文本?该文件包含\u042D\u。。。等等,不是一个真实的字符你使用什么版本的ruby?您的意思是文件包含文本\u042D\u0440\u044B\u0433\u044D\u0436\u044D\u044D,还是实际上文件包含文本?该文件包含\u042D\u。。。等等,不是真正的character@Tass:同意,如果从非安全组收到字符串,eval可能会导致安全风险source@Tass:同意,如果从非安全来源接收字符串,eval可能会导致安全风险