2013-06-28 38 views
1

不能退出跡象ä,ö,ü我有以下問題: 我創建了一個文件上傳。上傳者工作正常。在上傳器中,我生成一個新的文件名(沒有空格,一切以小寫字母等等)。 爲此我創建了一個函數。但是我仍然遇到德語「Umlaute」(ä,ü,ö,ß)的問題。 當我使用該功能時,該功能並未取代它們。我總是得到名爲「ta ?? nzer.pdf」的文件。從文件名

這裏是PHP代碼:

$temp = explode(".", $_FILES["file"]["name"]); 
$newname = generate_alias($temp[0]); 
$_FILES["file"]["name"] = $newname.".".$temp[1]; 

move_uploaded_file($_FILES["file"]["tmp_name"], 
     "../media/presse/" . $_FILES["file"]["name"]); 

這裏的功能:

function generate_alias($text) { 
# Leerzeichen an Anfang und am Ende entfernen 
$text = trim($text); 
# Umlaute ersetzen 
$upas = Array("ä" => "ae", "ü" => "ue", "ö" => "oe", "Ä" => "Ae", "Ü" => "Ue", "Ö" => "Oe","ß" => "ss","á"=>"a","Á"=>"A","é"=>"e","è"=>"e","ê"=>"e","É"=>"E"); 
$text = strtr($text, $upas); 
# Alles klein schreiben 
$text = strtolower($text); 
#Sonderzeichen entfernen 
$not_allowed = array("/", "|", "\\", "_", "(", ")", "{", "}", "[", "]", "!", "\"", "'", "‘", "$", "&", "?", "=", "*", "#", ";", ",", ":", ".", "<", ">", "^", "°"); 
$text = str_replace($not_allowed, "", $text); 
# Leerräume durch Bindestrich ersetzen 
$text = strtr ($text, " ", "-"); 

return $text; 
} 

我使用這個功能也從文章標題創建別名。文章標題來自$ _POST ['title']。德國的「Umlaute」被取代。但不是在這種情況下 - 上傳文件。

你知道爲什麼嗎?

+0

您可能會遇到瀏覽器發送的字符集有問題。你可以看看[這裏](http://www.w3schools.com/tags/att_form_accept_charset.asp) – 2013-06-28 07:10:32

回答

0

也許你可以嘗試在你的標籤中添加這個?

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

也是頁面的編碼是UTF8,,你必須添加:

大概不會。確保php文件實際上是用utf-8編碼保存的。

讓我知道我是否可以幫助您更多

+0

你好,我已經整合了這一行: 在我的php文件中。 我用我的texteditor打開了php文件並保存爲utf-8。 但問題沒有解決。任何其他想法? –

+1

嗨ini_set('default_charset','utf-8')請試試這個也你可以參考鏈接來避免這種類型的問題http://webmonkeyuk.wordpress.com/2011/04/23/how-to-avoid-字符編碼問題在PHP中/ – liyakat

+0

對不起,遲到的答案...現在這是可以的...它只在MAMP中不起作用... –