2015-09-07 35 views
-2

我有一個腳本,它從一臺服務器讀取一些數據並將其存儲在一個文件中。但該文件似乎不知何故腐敗。我可以把它打印到顯示器,但檢查文件與file產生文件編碼的Mac問題

bash$ file -I filename 
filename: text/plain; charset=unknown-8bit 

爲什麼告訴我,編碼是未知的?文件顯示我作爲

「The Galaxy A5 and A3 offer a beautifully crafted full metal unibody 

成十六進制的第一行顯示,前三個字節是0xE2,0x80的,爲0x9c其次是普通的ASCII文本The Galaxy A5 ...

有什麼不對?爲什麼file告訴我編碼是未知的,它究竟是什麼?

+1

無法訪問文件*或*某種指示內容以及它如何被破壞;不,我們不可以。也許可以查看['character-encoding' tag wiki](http://stackoverflow.com/tags/character-encoding/info)瞭解如何提出一個適度智能問題的一些提示。 – tripleee

+0

不,「Mac」不會默默地更改任何編碼。也許在您的特定工作流程中有一些東西,但由於我們不知道這是什麼,我們無法幫助您。 – deceze

+0

只需在終端上打印即可正常工作。只是將其重定向到文件正在創建問題。 – neel

回答

0

您可以使用iconv將文件轉換爲所需的字符集。例如。

iconv --from-code=UTF8 --to-code=YOURTARGET 

要獲取支持的目標列表,請使用--list標誌。

+0

我試過了,它顯示iconv:從unknown-8bit不支持的轉換 – neel

+0

你知道遠程服務器的字符集嗎?您應該能夠指定它進行轉換。 –

+0

是的,它的UTF-8格式 – neel

1

根據問題中的信息,該文件是一個非常好的UTF-8文件。前三個字節編碼LEFT DOUBLE QUOTATION MARK (U+201C) aka一個引用。

也許你的版本file是真的老了。

+0

如果您仍然遇到問題,可以使用適當的診斷程序發佈新問題。你可以平分文件來查找有問題的字節(刪除一半,看問題是否存在;如果不存在,則恢復有問題的一半,然後迭代刪除*的一半,等等) – tripleee