编码ruby utf-8错误

时间:2017-10-24 10:51:49

标签: ruby utf-8

我想转换此字符串

"Nous travaillons \u00c3\u00a1 rendre"

Nous travaillons à rendre

但无法做到。我在字符串上尝试了force_encoding("UTF-8")方法,但这也没有用。我的输出总是

"Nous travaillons á rendre"

如果我手动将\u00替换为\x

,那么似乎只会有效
"Nous travaillons \xc3\xa1 rendre"

但是gsub似乎没有对此"Nous travaillons \u00c3\u00a1 rendre"

起作用

我正在使用ruby 1.9.3

2 个答案:

答案 0 :(得分:1)

你有没有尝试过:“Nous travaillons \ u00E0 rendre”?

你想要的角色(带有坟墓的拉丁小写字母A)是一个单个 unicode角色。这意味着如果你正在使用\ u,你只需要一个转义序列,而不是你的问题。您正在混淆Unicode代码点(字符)和UTF-8编码的概念。

如果要在字符串中表示UTF-8编码,则应使用两个 \ x序列...如果要表示编码字符本身,则应使用一个< / strong> \ u sequence。

只有你错误地使用\ u才能使你不得不诉诸 force_encoding

答案 1 :(得分:0)

此后必须对字符串和强制编码进行编码。

"Nous travaillons á rendre".encode("Windows-1252").force_encoding("utf-8")

结果:

"Nous travaillons á rendre"