【发布时间】:2013-04-02 19:39:50
【问题描述】:
Iconv 有这个:
git_log = Iconv.conv 'UTF-8', 'iso8859-1', git_log
由于弃用警告,现在我想将其更改为使用 String#encode,但我不能,不起作用:
git_log = git_log.encode(Encoding::UTF_8, :invalid => :replace, :undef => :replace, :replace => '')
我曾经在这里使用Iconv,它仍然可以工作:
https://github.com/gamersmafia/gamersmafia/blob/master/lib/formatting.rb#L244
但是当我用 String#encode 方法替换这些行时,首先 gsub 会引发 "invalid byte sequence in UTF-8" 错误。
你知道为什么吗?
【问题讨论】:
-
你的错误是什么?在 Ruby 1.9.3 中,您的编码调用适用于我:
"Foo\U+FFC2\U+FFA3".encode(Encoding::UTF_8, :invalid => :replace, :undef => :replace, :replace => ''); => "Foo" -
我以前在这里使用 Iconv,它仍然可以工作:github.com/gamersmafia/gamersmafia/blob/master/lib/… 但是当我用 String#encode 方法替换这些行时,首先 gsub 会引发“UTF-8 中的无效字节序列”错误(信息添加到问题)。
标签: ruby-on-rails ruby