【发布时间】:2018-01-28 07:13:02
【问题描述】:
嗯,
在我的数据库表中,我将图像名称设置为 D@üäö#-09710.jpg。当我调用表格数据时,所有数据都显示,除了这个图像因为这个名字没有显示!!!
我通过检查元素进行了检查,它向我展示了:
src="images/users/D@üäö#-09710.jpg"
连图片都用这个名字成功上传了:
D@üäö#-09710.jpg
但是当我使用这个图像 URL 直接查看图像时,浏览器会显示我:
请求的 URL /xxx/xxxx/images/users/D@üäö 不是 在此服务器上找到。
另一个奇怪的事情是,当我从浏览器复制 URL 并将其粘贴到这里时,它看起来像这样:
http://localhost/xxx/xxxx/images/users/D@%C3%BC%C3%A4%C3%B6#.jpg
所以看起来特殊字符没有正确读取!
PHP页眉是这样的:
<?php require_once('admin/init.php'); ?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="keywords" content="">
<title>ccrroipr</title>
<?php require_once('includes/css.php'); ?>
</head>
<body>
PHP 连接:
try {
$this->_pdo = new PDO('mysql:host=' . Config::get('mysql/host') . ';dbname=' . Config::get('mysql/database'), Config::get('mysql/username'), Config::get('mysql/password'), array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4"));
$this->_pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->_pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch(PDOException $e) {
die($e->getMessage());
}
数据库排序规则是:
utf8mb4_unicode_ci
【问题讨论】: