我有字符串"V\355ctor"
(我认为是Víctor
)。有没有办法将其转换为 ASCIIí
将被 ASCII 替换i
?
我已经尝试过 Iconv 没有成功。(我只是得到Iconv::IllegalSequence: "\355ctor"
)
此外,Ruby 1.8.7 和 Ruby 2.0 之间有区别吗?
编辑:
Iconv.iconv('UTF-8//IGNORE', 'UTF-8', "V\355ctor")
这似乎有效,但结果Vctor
不是Victor
我知道两种选择。
transliterate
来自I18n宝石。
$ irb
1.9.3-p448 :001 > string = "Víctor"
=> "Víctor"
1.9.3-p448 :002 > require 'i18n'
=> true
1.9.3-p448 :003 > I18n.transliterate(string)
=> "Victor"
来自stringex gem的 Unidecoder 。
Stringex::Unidecoder..decode(string)
更新:
在“V\355ctor”上运行 Unidecoder 时,会出现以下错误:
Encoding::CompatibilityError: incompatible encoding regexp match (UTF-8 regexp with IBM437 string)
嗯,也许你想先从 IBM437 翻译:
string.force_encoding('IBM437').encode('UTF-8')
这可能会帮助您走得更远。请注意,自动检测到的编码可能不正确,如果您确切知道编码是什么,它将使一切变得容易得多。