如何使用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中的引用进行转换。