14

当我运行时rake test,我每次都会收到错误行。

log writing failed. "\xE2" from ASCII-8BIT to UTF-8  

请对此进行指导。如何消除此错误。

4

3 回答 3

17

您可能在代码中的某个地方尝试输出编码错误或包含一些奇怪字符且编码不起作用的字符串。

正确的方法是找到导致问题的字符串并找出其编码错误的原因。请参阅字符串 api ( http://ruby-doc.org/core-2.2.0/String.html )中的 encoding 和 force_encoding 。

如果您只想能够在日志中打印该行并避免错误,您可以使用该字符串执行以下过程。

str = 'here is some string with wrong encoding and funny characters e.g. "\xE2"'
# note if you do this in console, the str is encoded correctly

# Rails.logger.info(str) # this would result in the error line

# This will change the encoding and remove weird characters
str = str.encode('utf-8', :invalid => :replace, :undef => :replace, :replace => '_')

Rails.logger.info(str) # this now works
于 2013-03-19T02:13:15.107 回答
4

你在用postgresql吗?您的数据库可能正在使用 SQL_ASCII。您可以通过运行psql template1 -c 'show server_encoding'Delete the database cluster 并使用 重新初始化它来检查它是否存在initdb -E utf8 /path/to/database

于 2015-02-03T00:42:00.820 回答
1

在我的情况下,一些奇怪的引号是罪魁祸首,所以我只是用这样的安全字符替换它们,

msg = error.message.gsub(/[“”]/, "\"").gsub(/[‘’]/,"\'")
于 2015-12-08T12:33:51.593 回答