簡體   English   中英

帶有韓國文件名的上傳文件未正確存儲到mysql數據庫中

[英]Uploading files with korean filename doesn't get stored properly into mysql database

我的上傳腳本似乎沒有正確地將韓文字符存儲到數據庫中。

$file_name = $_FILES['Filedata'][ 'name' ];
$newFileName = time() . "-" . $file_name;
$target = $uploaddir . $newFileName;
$source_file_path = $_FILES['Filedata']['tmp_name'];
if( move_uploaded_file( $source_file_path, $target ) ) {
    $sql = "INSERT INTO images(file, album, author) VALUES('".$newFileName."', '".$albumID."', '".$authorID."')";
    $result = mysql_query($sql);
    if(!$result) {
        echo "Could not store into database";
    } else {
        $sql = "UPDATE albums SET `lastdate` = NOW() WHERE id = '".$albumID."'";
        if(mysql_query($sql)) {
            echo str_replace($_SERVER['DOCUMENT_ROOT'],'',$target);
        } else {
            echo mysql_error();
        }
    }
}

奇怪的是,它使用正確的名稱正確存儲文件,但它將所有不常見的字符添加到數據庫中,如“1321088842-ê°”,“。.jpg”。 數據庫設置為utf8_general_ci所以我不確定可能是什么問題。 有任何想法嗎?

你需要確保:

  1. 數據庫/表/列正在使用UTF-8
  2. 數據庫連接使用UTF-8
  3. 上傳文件時,Web瀏覽器使用UTF-8
  4. 當您稍后向用戶顯示文件時,Web瀏覽器正在使用UTF-8
  5. 您查看數據庫時所有的開發工具(例如:phpMyAdmin)都使用UTF-8

如果在過程中的任何地方任何地方都沒有使用UTF-8,那么事情將會變得非常錯誤。

請注意,默認情況下,Web瀏覽器通常不使用UTF-8。 所以你需要包含一個指示它使用utf-8的<meta>標簽,或者手動設置它們來使用它(在我的瀏覽器中,使用View - > Text Encoding - > UTF-8)。

你的php腳本正在回顯瀏覽器的文件名,但是如果只是回顯沒有<meta>標簽的文件名,瀏覽器會嘗試將其顯示為其他編碼,也許是latin1。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM