2012-05-16 56 views
0

我想一個PHP文件(client.php)從UTF-8轉換爲ISO-8859-1和下面的命令不上的文件沒有:的iconv在Mac OS X 10.7.3無助

的iconv -f UTF-8 -t ISO-8859-1 client.php

在執行時被顯示的原始文件的內容。

事實上,當我檢查該文件的編碼執行的iconv與後:

文件-I client.php

古同UTF-8所示:

client.php:text/x-php; charset = utf-8

+0

是否有文件,其中編碼實際上有所作爲任何非ASCII字符? – deceze

回答

3

iconv應用程序應將文件中字符的編碼從一個代碼集轉換爲另一個代碼集,並將結果寫入標準輸出

這裏有一個解決方案: 寫入標準輸出到一個臨時文件並重新命名臨時文件

iconv -f UTF-8 -t ISO_8859-1 client.php > client_temp.php && mv -f client_temp.php client.php 
+0

嘿@ jackjr300 !!有效!!恕我直言,在iconv中應該有一個標誌允許覆蓋輸入文件。只是一個意見。我會在下次讀取結果寫入標準輸出時意識到這一點。 – CarlesAndres

+0

iconv中沒有標誌 – jackjr300

1

對於最低的128個字符,ASCII,UTF-8和ISO-8859是100%相同的編碼。如果您的文件只包含該範圍內的字符(這基本上是您在美國英語鍵盤上找到的一組字符),則這些編碼之間沒有區別。

我猜猜怎麼了:純文本文件沒有關聯的編碼元數據。僅僅通過查看它就無法知道純文本文件的編碼。 file實用程序正在做的只是給出最好的猜測,因爲沒有什麼區別,它傾向於告訴你該文件是UTF-8編碼的,從技術上講很可能是這樣。

+0

我的文件包含一些西班牙文字符,它們不在ASCII集合中。實際上,我注意到當我使用下面的代碼來編碼文件時出現了錯誤:''。不管怎麼說,還是要謝謝你。 – CarlesAndres