Unicode строка:Ruby: юникода строка экранирования в
string = "CEO Frye \u2013 response to Capitalism discussion in Davos: Vote aggressively with your wallet against firms without social conscience."
Я попытался (с помощью Is this the best way to unescape unicode escape sequences in Ruby?):
def unescape_unicode(s)
s.gsub(/\\u([\da-fA-F]{4})/) {|m| [$1].pack("H*").unpack("n*").pack("U*")}
end
unescape_unicode(string) #=> CEO Frye \u2013 response to Capitalism discussion in Davos: Vote aggressively with your wallet against firms without social conscience.
Но выход (в файл) по-прежнему совпадает с входом! Любая помощь будет оценена по достоинству.
Edit: Не используя IRB, используя RubyMine и вход обрабатывается в Twitter, поэтому единственный "\u"
не "\\u"
Edit 2:
'' \ u2013 "' является буквальным символом Юникода ... вы имели в виду '' \\ u2013 "'? –
Вы знаете, что это, вероятно, проблема с gsub. Он ищет \ u, а не \ u ... Я не слишком уверен, как исправить :(. \ U2013 "это то, что я разобрал, это не ручной ввод. –
Насколько я могу судить, нет проблема с регулярным выражением или помощником 'unescape_unicode'. В строке, которую вы предоставили (как определено в вопросе), нет ничего, что могло бы быть unescape. Проблема может быть больше в том, как вы пишете это в файл, чем проблема со строкой. –