2012-10-15 17 views
2

此代碼適用於我的虛擬主機,但不適用於本地主機。我怎樣才能讓它在我的本地主機(我使用Windows)上工作?在本地主機上使用瑞典語字符進行fwrite php

文件名稱爲「åäö.html」。

<?php 

$src = 'testing'; 

$file_name = 'åäö.html'; 

$fopen=fopen($file_name, 'w'); 
fwrite($fopen, $src); 
fclose($fopen); 

?> 
+0

它的工作在我的Windows(7),PHP 5.4.3 ... – HamZa

+0

感謝您的信息!將嘗試升級PHP 5.4.3 ... :) – user1087110

回答

3

MS Windows因字符編碼的常見問題而聞名。在你的情況下,它看起來像你的「虛擬主機」使用UTF-8作爲編碼,而你的本地MS-Windows系統使用8位編碼。這可能是一些ISO-8859編碼,但更有可能是不正確的Windows代碼頁1251或任何幾乎是,但不是真正的ISO編碼。這似乎很可能,因爲您可以看到3個UTF字符在您的MS-Windows系統內被「轉換」爲六個字符。典型用於非ASCII字符。

有你有三種選擇:

  1. 實驗PHPS default_charset設置。你可以在php.ini文件中找到你的網頁服務器php解釋器使用的文件。
  2. 你切換你的MS-Windows系統在內部使用UTF-8編碼作爲 這些日子(這很明顯)有其他系統。不過 這並不容易,特別是要切換現有的系統是 可能不是一個好主意。
  3. 你必須轉換所有字符串你在這兩個世界之間交換 。由於編碼爲 的自動檢測不可靠(事實上可以證明它不可行,所以 可靠),您必須編碼特定的轉換。 PHP的確提供了這樣的例程,但從長遠來看,這是一件很痛苦的事情。在這種情況下,您傳輸一個php文件,這意味着要手動轉換所有這樣的字符串(編程語言只使用在兩種編碼中都是'合法'字符的ASCII字母,但string值的情況並非如此)到另一個編碼。

順便說一句:你可以通過使用文本編輯器來輕鬆地使用編碼(來自和來自切換),這允許在編碼之間輕鬆切換。這有助於瞭解正在發生的事情。和一個HexEditor是一個非常usefool工具,以找出什麼是真的存儲在一個文件中:-)