井,
在我的数据库表中,我将图像名设置为D@üäö#-09710.jpg.当我调用表数据时,所有的数据都显示出来,除了这个图像因为这个名字没有显示!
我检查了这个元素,它向我展示了:
src="images/users/D@üäö#-09710.jpg"
甚至该图像也用此名称成功上传:
D@üäö#-09710.jpg
但是,当我使用这个图像URL直接查看图像时,浏览器向我显示:
在此服务器上找不到所请求的URL /xxx/images/user/D@/images/user/D@/images/D@/images/D@/images/d@/映像/user/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
发布于 2018-01-28 04:36:47
URL不能包含所有这些字符,有关更多信息,请参见Characters allowed in a URL。您必须使用urlencode()
将URL从D@üäö#-09710.jpg
转换为D%40%C3%BC%C3%A4%C3%B6%23-09710.jpg
。您可以保留文件名和数据库条目的原样(假设您的文件系统可以处理字符),但是在创建链接时使用urlencode。
https://stackoverflow.com/questions/48484051
复制