2013-09-25 68 views
2

請耐心等待並檢查此問題。上傳文件時無法設置正確的字符集

我寫了一些簡單的PHP代碼上傳圖片。

下面是代碼(段)

<?php 

header('Content-Type: text/plain; charset=utf-8'); 

//set encoding for prepared statements 
$dbh->exec("SET NAMES UTF8"); 
$dbh->query('SET NAMES UTF8'); 

//check if file is actually an image etc. 

//send image to "upload" folder 
    move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . $_FILES["file"]["name"]); 

//save to the database a string like "upload/myImage.jpg", so I can render it on the site later 
$stu = $dbh->prepare("UPDATE multi SET m_place=:name WHERE m_id = :id"); 
$stu->bindParam(':name', $n, PDO::PARAM_STR); 
$n= "upload/".$_FILES["file"]["name"];           
$stu->execute(); 

如果圖像的名稱是英文的,一切都很好。如果是希臘語,它會在數據庫中保存,但不在文件夾中。在數據庫中,我看到χωρις τιτλο.jpg(這是正確的)和文件夾χωΟΞ―Ο‚ τίτλο.jpg,這是錯誤的。

我試過一切,無法解決這個問題。在文件夾中獲得正確的標題。

數據庫(postgreSQL 9.1)的編碼是UTF8,整理和字符類型是Greek_Greece.1235。我保存圖片標題的表格列中的拼貼是pg_catalog."C"

我使用DreamWeaver。處理上傳的文件是一個php文件。編碼是utf8,Unicode標準化表單是C,包括Unicode簽名(BOM)未選中。

控制面板中的區域和語言中的默認語言爲希臘語。 (Windows 7家庭高級版)

瀏覽器的編碼是UTF8

我也使用Apache 2.2.22。這是Apache的錯嗎?或者它的PHP文件?還是數據庫?

我不知道還有什麼辦法......我錯過了什麼?請請請諮詢

+0

http://www.php.net/manual/en/book.mbstring.php – nandoP

回答

1

匝我沒有試過一切。

感謝this我找到了解決方案。

它與PHP,以及如何「PHP文件系統函數只能處理是在系統代碼頁字符」

所以我用了iconv函數來完成。

我使用日語改變了代碼像這樣

move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . iconv('UTF-8', 'Windows-1253',$_FILES["file"]["name"])); 
0

對於應用,代碼頁是CP932 這可以通過在命令行使用chcp命令comfirm。

enter image description here

示例代碼

$fullPath = $uploadFolderPath."\\".iconv("utf-8", "cp932", $fileName); 
move_uploaded_file($this->request->data["file_name"]['tmp_name'], $fullPath); 
相關問題