【发布时间】:2013-11-11 19:46:20
【问题描述】:
我有字符串"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
【问题讨论】:
-
你需要走多远?您是只想去掉重音符号,还是也想将土耳其语的
ı转换为简单的i? -
后者。我不想“忽略”这个字符,而是用一个简单的
i替换它 -
您输入的不是
UTF-8,很可能是ISO-8859-1。并不是说这是您需要的答案,但是如果您从对输入字符串编码的错误假设开始,您将无法获得合理的转换。正确的 ASCII 翻译需要正确 -
@NeilSlater 说了什么。值八进制 355/十进制 237 后跟“c”的字节在 UTF-8 中是不合法的,其中“í”字符被编码为两个字节:八进制 303/十进制 195 后面跟着八进制 255/十进制 173。
-
谢谢 Neil 和 Mark,但是像
Iconv.iconv("ISO-8859-1", "ASCII", "V\355ctor")这样的东西对我来说会引发 Iconv::IllegalSequence 错误(我已经尝试了很多组合)。