2013-01-11 61 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,如果我必須使用這個第三方庫。 –