2013-01-11 41 views
0

例如,我们需要第三方lib来解析和获取文件元数据。但该方法将通过utf-8解码所有元数据,即使元数据是以另一种编码编码的,它也会返回utf-8编码的字符串。而且lib不支持任何方法来返回一个原始字符串数据,以便我们对它进行正确编码。现在我们知道文件的元数据的原始编码是,例如,GBK。有没有办法纠正utf-8编码的字符串为GBK?如何更正Ruby中不正确的编码字符串?

回答

1

不,没有解码UTF-8的东西不是UTF-8是有损的。这意味着,当你从lib获取字符串时,你已经失去了信息,并且不能将原始数据表示为GBK。更改该库的工作方式,或将文件元数据更改为UTF-8。

+0

更改lib是困难的。如果文件格式和lib都是封闭源,会怎么样? –

+0

@ y.s。文件格式和lib是封闭源码,但彼此不兼容?向提供商提交错误报告是您唯一的选择 – Esailija

1

是的。您应该了解有关字符串类的ruby 1.9的force_encodingencode方法。我建议尽快将所有内容转换为UTF-8格式,然后再使用红宝石进行操作。

+0

第三方库不支持任何方法来返回原始字符串数据,以便我们对其进行正确编码。 –

+0

我的意思是我没有机会尽快将其转换为utf-8,如果我必须使用这个第三方库。 –