我有字符串"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"
Run Code Online (Sandbox Code Playgroud)来自stringex宝石的 Unidecoder .
Stringex::Unidecoder..decode(string)
Run Code Online (Sandbox Code Playgroud)更新:
在"V\355ctor"上运行Unidecoder时,会出现以下错误:
Encoding::CompatibilityError: incompatible encoding regexp match (UTF-8 regexp with IBM437 string)
Run Code Online (Sandbox Code Playgroud)
嗯,也许你想先从IBM437翻译:
string.force_encoding('IBM437').encode('UTF-8')
Run Code Online (Sandbox Code Playgroud)
这可以帮助您进一步发展.请注意,自动检测的编码可能不正确,如果您确切知道编码是什么,它会使一切变得更加容易.
| 归档时间: |
|
| 查看次数: |
1227 次 |
| 最近记录: |