2013-04-15 41 views
0

我在那裏搜索了很長時間,但沒有任何有用的結果。新文件的Ubuntu編碼

我正在開發一個在Ubuntu 11.04虛擬機上使用eclipse的PHP項目。每件事情都很好。我從來不需要尋找文件編碼。但是在將項目部署到我的服務器之後,所有內容都顯示爲錯誤的編碼。用Notepad ++手動轉換爲UTF8後,我的問題得到解決。

現在我想在我的Ubuntu VM中進行更改。還有問題。我已經在Eclipse中檢查了首選項,但是每個屬性都設置爲UTF8:一般內容類型,工作區,項目設置等等......

如果我在終端上查找編碼,它會顯示「test_new.dat: text/plain; charset = us-ascii「。所有文件都保存爲ascii格式。如果我嘗試用終端創建一個新文件(「touch」),它也是一樣的。

然後我試着將文件轉換經過iconv:

iconv -f US-ASCII -t UTF8 -o test.dat test_new.dat 

但編碼不發生改變。特別是PHP文件似乎是抵抗的。我的項目中有一些* .ini文件,這些文件可以進行轉換?!

不知道該怎麼辦?

這裏是我的Ubuntu的區域設置:

LANG=de_DE.UTF-8 
LANGUAGE=de_DE:en 
LC_CTYPE="de_DE.UTF-8" 
LC_NUMERIC="de_DE.UTF-8" 
LC_TIME="de_DE.UTF-8" 
LC_COLLATE="de_DE.UTF-8" 
LC_MONETARY="de_DE.UTF-8" 
LC_MESSAGES="de_DE.UTF-8" 
LC_PAPER="de_DE.UTF-8" 
LC_NAME="de_DE.UTF-8" 
LC_ADDRESS="de_DE.UTF-8" 
LC_TELEPHONE="de_DE.UTF-8" 
LC_MEASUREMENT="de_DE.UTF-8" 
LC_IDENTIFICATION="de_DE.UTF-8" 
LC_ALL= 
+0

確定您的iconv參數是否正確?它看起來應該是:'iconv -f US-ASCII -t UTF8 -o test_new.dat test.dat' – chrishiestand

+0

http服務器發送文件的字符集是什麼?問題可能是你需要在那裏設置utf-8。什麼「內容」顯示錯誤的編碼? – chrishiestand

回答

1

我也想知道字符編碼,並發現可能在這裏有用的東西。

當我在我的ubuntu 12.04上創建一個新的空的.txt文件,並要求使用「file -bi filename.txt」進行字符編碼時,它顯示了我:charset = binary。在打開它並在內部寫入內容(如「哈哈」)後,我使用「另存爲」將其保存,並明確選擇UTF-8作爲字符編碼。現在很奇怪,它再次詢問後沒有向我顯示charset = UTF-8,但返回charset = us-ascii。這似乎很奇怪。但是,當我再次完成整件事情時,它卻變得更加陌生,但這一次在文件中包含了一些德國特定的charakters(在這種情況下),並再次保存(這次沒有保存,因爲我只是按下保存)。現在它說charset = UTF-8。

因此,如果不需要UTF-8,至少gedit正在檢查文件並將其從UTF-8降級到us-ascii,因爲該文件可以使用us-ascii進行編碼。

希望這有一點幫助,即使它不是PHP相關的。

問候

+0

謝謝。雖然這不是我的問題的最終解決方案,但現在我知道我在錯誤的軌道上。你絕對是對的......而且Joni也是。如果我在我的文件中鍵入德語變音符號,它們將顯示爲UTF-8。 因此,帶有德語內容的my * .ini文件顯示爲UTF-8編碼。然後,我必須朝另一個方向尋找解決方案來解決我的問題。 – LingLing

+0

問題解決了。我的網站在Ubuntu VM和服務器上的不同輸出是由htmlentities()引起的,它是參數「encoding」。該參數的缺省值是5.4.0之前的PHP版本中的ISO-8859-1,以及PHP 5.4.0之後的UTF-8。 我的服務器與版本5.3.10一起工作,我的虛擬機版本是5.4.7。我已經明確地將編碼設置爲UTF-8,現在它適用於兩個版本:-) – LingLing

0

UTF-8與ASCII兼容。因此ASCII文本文件也是有效的UTF-8,並且從ASCII到UTF-8的轉換是無操作的。

+0

謝謝,看看我上面的答案。 – LingLing