我有一個 rest api 端點,可讓您將檔案上傳到服務器。當我保存使用英文字母命名的檔案時,沒有問題。但是當我嘗試保存一個包含日文字符的檔案時,該檔案被保存并且服務器中的檔案名沒問題,但是當我查看資料庫時,檔案名不正確。
這是保存檔案時我的資料庫中的結果。

但是當我查看服務器時,檔案名是正確的

我嘗試將資料庫排序規則更改為
utf8mb4_unicode_ci
utf8
utf8_general_ci
但問題仍然存在。
更新:這是我插入資料的插入查詢
public function setFileQuery($param,$file){
$this->module_id = $param['moduleid'];
$this->file_name = $file['name'];
$this->file_size = $file['size'];
$q = "INSERT INTO data_file
(module_id,file_name,file_size,start_time,end_time,elapse_time,through_put)
VALUES
(?,?,?,?,?,?,?)";
$insertStmt = $this->conn->prepare($q);
$insertStmt->execute([
$this->module_id,
$this->file_name,
$this->file_size,
null,
null,
null,
null,
]);
Responses::http_ok();
}
}
PS:對于有空格的檔案名,我將空格轉換成,_因為下載檔案時出現錯誤。但是這個問題與轉換檔案名無關,因為檔案名沒有空格并且它在我的本地正常作業。
uj5u.com熱心網友回復:
請確保表排序規則和欄位排序規則都是 utf8(例如 utf8_general_ci)
(1)首先,表的排序規則要設定為utf8(例如utf8_general_ci)

(2)并確保資料欄位也是utf8(例如utf8_general_ci)

(3) 現在,如果您可以插入資料(例如,通過 Phpmyadmin 面板或通過任何 PHP 腳本):
對于 phpmyadmin:

對于 PHP :
如果您使用的是 PDO:請確保您已在連接中設定了字符集,例如:
$conn = new PDO("mysql:host=$host;dbname=$db;charset=utf8", $user, $pass);
如果您使用的是 mysqli:
$conn = mysqli_connect($servername, $username, $password, $dbname);
/* change character set to utf8 */
mysqli_set_charset($conn,"utf8");
(4) 結果會很好:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/370277.html
上一篇:使用php呼叫多維陣列元中的值時是否只能獲得3個結果?[復制]
下一篇:影像頂部的CSS背景大小細黑線
