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 - 问题捆绑安装nokogiri 1.7.2 on ruby on rails 4.x.