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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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 将字符串转换为实际UTF-8字符_Ruby_Utf 8 - Fatal编程技术网

Ruby 将字符串转换为实际UTF-8字符

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] + '

示例文件包含以下内容。 [\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] + '}' }
  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可能会导致安全风险