如何使用Ruby转义Unicode字符串?

我需要使用反斜杠将Unicode字符串编码/转换为其转义forms。 谁知道怎么样?

在Ruby 1.8.x中,String#inspect可能是您正在寻找的,例如

>> multi_byte_str = "hello\330\271!" => "hello\330\271!" >> multi_byte_str.inspect => "\"hello\\330\\271!\"" >> puts multi_byte_str.inspect "hello\330\271!" => nil 

在Ruby 1.9中,如果您希望多字节字符使其组件字节转义,您可能想要说:

 >> multi_byte_str.bytes.to_a.map(&:chr).join.inspect => "\"hello\\xD8\\xB9!\"" 

在Ruby 1.8和1.9中,如果你对(转义的)unicode代码点感兴趣,你可以这样做(虽然它也逃脱了可打印的东西):

 >> multi_byte_str.unpack('U*').map{ |i| "\\u" + i.to_s(16).rjust(4, '0') }.join => "\\u0068\\u0065\\u006c\\u006c\\u006f\\u0639\\u0021" 

要在Ruby中使用unicode字符,请使用“\ uXXXX”转义符; 其中XXXX是UTF-16码点。 见http://leejava.wordpress.com/2009/03/11/unicode-escape-in​​-ruby/

如果你有Rails,你可以使用JSON编码器:

 require 'active_support' x = ActiveSupport::JSON.encode('µ') # x is now "\u00b5" 

通常的非Rails JSON编码器不会“\ u”-ify Unicode。

如果只是将#Encoding: UTF-8添加到文件的顶部,则可以直接使用unicode字符。 然后你可以在你的源代码中自由使用ä,ǹ,ú等。

试试这个gem。 它将Unicode或非ASCII标点符号和符号转换为最近的ASCII标点和符号

https://github.com/qwuen/punctuate

示例用法:“100%”。punctuate =>“100%”

gem使用https://lexsrv3.nlm.nih.gov/LexSysGroup/Projects/lvg/current/docs/designDoc/UDF/unicode/DefaultTables/symbolTable.html中的引用进行转换。