我有一个可以上传文件的脚本,但是每当文件名有 - 它没有正确显示或文件正在更改其名称。例如,当我上传它时,我有ñino.jpg,它显示为niño.jpg,我尝试过:
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
但仍然无法正常工作,我尝试从latin1_swedish更改我的数据库排序规则utf8_spanish_ci中的表但仍然无法正常工作
我的标题:
<?php
require('db.php');
include("auth.php");
?>
<?php header('content-type:text/html;charset=utf-8');?>
<html>
<head>
<title>Masterlist - Private Secondary </title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
<script src="https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.12/js/dataTables.bootstrap.min.js"></script>
<link rel="stylesheet" href="https://cdn.datatables.net/1.10.12/css/dataTables.bootstrap.min.css" />
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
<link href="css/dashboard.css" rel="stylesheet">
</head>
答案 0 :(得分:0)
你应该使用mysql_set_charset功能:
new PDO("mysql:host=$host;dbname=$name;charset=utf8", $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
如果你使用PDO:
{{1}}
答案 1 :(得分:-1)
问题在于程序本身,试图将文件命名为数据库,并且没有翻译器。如果您保存屏幕上任何内容的名称,则取决于很多问题,甚至是浏览器的语言或操作系统。它会像您用时髦的“?”问号描述的那样显示,因为它只保存您在其中键入文件名的字段名中的内容。我到处都听从了所有建议。正确设置标题,并尝试所有可用的字符集。甚至使用了谷歌字体和任何可用的字体来正确显示这些字符并将其保存在我的数据库中,但没有成功。
一个旧程序解决了将Ñ转换为其UNICODE HTML实体的问题:Ñ
为ñ,您可以使用ñ
(请参见此处的图表https://www.compart.com/en/unicode/U+00D1)来回完成此过程MySQL到应用程序。
因此,您只需要将包含字母Ñ和ñ的数据库字符串更改为它们对应的UNICODE,即可在具有UTF字符集的浏览器中正确反映。就我而言,我解决了将数据库中所有姓氏中所有Ñ和ñ替换为对应的UNICODE的问题。
与其将文件名在数据库中另存为
'niño.jpg'尝试将其另存为'ni ñ
o.jpg'
请记住,您将需要采取其他方法来检索文件,因为记录的名称将是“ ni ñ
o.jpg”而不是“niño.jpg”。也许添加一个名为“ displayed_file_name”的额外字段,以便您可以看到保存了正确的西班牙文拼写文件名...您需要在环境中进行测试。
我不建议使用国际代码保存文件(某些操作程序甚至可能一开始就无法正常工作),但是完全由您决定。希望对您有所帮助。最好的问候和愉快的编码!