好吧,
在我的数据库表格中,我将图像名称设置为D@ääö#-09710.jpg。当我调用表格数据时,所有数据都会显示,但由于此名称而未显示此图像!!!
我通过检查元素进行检查,它显示了我:
SRC = “images/users/D@üäö#-09710.jpg”
即使使用此名称成功上传图片:
D@üäö#-09710.jpg
但是当我使用此图片网址直接查看图片时,浏览器会显示我:
请求的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
答案 0 :(得分:2)
网址不能包含所有这些字符,有关详细信息,请参阅Characters allowed in a URL。您必须使用urlencode()
将网址从D@üäö#-09710.jpg
转换为D%40%C3%BC%C3%A4%C3%B6%23-09710.jpg
。您可以按原样保留文件名和数据库条目(假设您的文件系统可以处理字符),但在创建链接时使用urlencode。