Ruby on Rails - Encoding::UndefinedConversionError: "\xC3" from ASCII-8BIT to UTF-8

Posted

技术标签:

【中文标题】Ruby on Rails - Encoding::UndefinedConversionError: "\\xC3" from ASCII-8BIT to UTF-8【英文标题】:Ruby on Rails - Encoding::UndefinedConversionError: "\xC3" from ASCII-8BIT to UTF-8Ruby on Rails - Encoding::UndefinedConversionError: "\xC3" from ASCII-8BIT to UTF-8 【发布时间】:2015-08-10 05:16:53 【问题描述】:

我有一个通过 FTP 从大型机获取平面文件的进程。这通常适用于某些文件。在其他情况下,我得到:Encoding::UndefinedConversionError: "\xC3" from ASCII-8BIT to UTF-8

那是使用Net::FTP's gettextfile 方法。 这是我的代码:

def find_file( position, value ) # => Value = CLKDRP03.txt, Forget the variable Position

    ftp = Net::FTP.new('IP') # => status 200
    ftp.login('user','pass') # => True

    files = ftp.list('*' + value + '*') # => Obtain the file

    if files[0] != nil

      str_file = files[0].split(" ").last # => Obtain the name of the file. In this case CLKDRP03.txt

      ftp.gettextfile(str_file,'data/input/' + str_file) # => ERROR!, str_file = CLKDRP03.txt
      # => data/input is the path where I put the files from FTP.
      return str_file

    else  
      return false
    end

end

如果我评论ftp.gettextfile这一行,错误就会不断出现。

提前致谢!对不起我的英语。

【问题讨论】:

这有帮助吗? ***.com/questions/9905268/… 异常实际上是从哪一行引发的?查看异常跟踪,并在上面的源文件中找到实际包含的行。是files = ftp.list('*' + value + '*')这行吗? 既然人们支持我的回答,您可以将我的回答标记为正确吗? 【参考方案1】:

对于从谷歌来到这里的任何人,这就是我修复编码错误的方法。

在您声明打开文件之前添加此代码

.force_encoding("UTF-8")

所以在将文件声明为这样的变量之前:

csv_file = params[:file].read.force_encoding("UTF-8")

希望这会有所帮助,因为我有这个问题很长时间了,但现在它可以正常工作了!

【讨论】:

感谢您发布此消息!我已经为这个错误苦苦挣扎了一段时间,这解决了它。 是的,没问题,同样在这里,我尝试在之后对其进行编码,但是当我重构我的代码时,我注意到我总是尝试在之后对其进行编码,但在我将它分配给变量之前从未尝试过编码。很高兴它帮助了你 知道也很有用,使用Encoding.default_external检查外部事物的默认编码并将其设置为UTF-8(如果这是您主要处理的)Encoding.default_external = Encoding::UTF_8。我遇到了类似的问题,但在 gem 中有一些东西,所以我不能太容易地进行 force_encoding。 我遇到了同样的问题,除了偶尔的编码错误是在文件写入时。这种情况的修复是file.write(str.force_encoding("UTF-8"))

以上是关于Ruby on Rails - Encoding::UndefinedConversionError: "\xC3" from ASCII-8BIT to UTF-8的主要内容,如果未能解决你的问题,请参考以下文章

思考Ruby On Rails的底层代码(Ruby on Rails 開發秘籍 | Ruby on Rails 快速入門)

ruby on rails如何安装

ruby on rails - 问题捆绑安装nokogiri 1.7.2 on ruby on rails 4.x.

Ruby on Rails入门篇

markdown [rails:devise] Ruby on Rails的身份验证gem。 #ruby #rails

ruby Ruby on Rails:常见路由