Ruby 清理传入字符串的标准方法?

Ruby 清理传入字符串的标准方法?,ruby,character-encoding,Ruby,Character Encoding,我与几个外部服务集成,通过http下载文件。我发现我必须先转换/清除文件名,然后才能在系统中使用它们。我在代码的不同部分都有类似的内容: name = name.encode('UTF-8', 'ASCII-8BIT', invalid: :replace, undef: :replace, replace: '') name = name.encode('UTF-8', 'ISO-8859-1', invalid: :replace, undef: :replace, replace: '')

我与几个外部服务集成,通过http下载文件。我发现我必须先转换/清除文件名,然后才能在系统中使用它们。我在代码的不同部分都有类似的内容:

name = name.encode('UTF-8', 'ASCII-8BIT', invalid: :replace, undef: :replace, replace: '')
name = name.encode('UTF-8', 'ISO-8859-1', invalid: :replace, undef: :replace, replace: '')
在每种情况下,我都必须询问服务我应该期望的编码


这是唯一的解决方法,还是有更标准、更通用的方法来清理传入字符串?

在Ruby 1.9.x中,有一个外部编码和一个内部编码,默认为全局编码。外部文件被视为已配置的外部编码,并自动转换为内部编码。您可以通过
Encoding.default\u external
Encoding.default\u internal
全局设置这些编码。您可以按每个文件将它们指定为
open
方法的参数,如下例所示:

File.open('/path/to/some/file', 'r', external_encoding: 'US-ASCII', internal_encoding: 'UTF-8')
请注意,您还可以单独指定每一个


有关更多信息,请参见。

这里有
查洛克·福尔摩斯
,但这是一个猜测。