Php ñ;enye西班牙语字符未在我的数据库中正确显示

Php ñ;enye西班牙语字符未在我的数据库中正确显示,php,mysqli,utf-8,Php,Mysqli,Utf 8,我有一个可以上传文件的脚本,但每当文件名出现错误时,它就不能正确显示,或者文件名正在更改。例如,当我上传它时,我有一个nino.jpg,它显示为niño.jpg,我试着放: <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 但仍然不起作用,我尝试将数据库排序规则utf8_spanish_ci中的表从latin1_swedish更改为utf8_spanish_ci,但仍然不起作用 我的标

我有一个可以上传文件的脚本,但每当文件名出现错误时,它就不能正确显示,或者文件名正在更改。例如,当我上传它时,我有一个nino.jpg,它显示为niño.jpg,我试着放:

<meta http-equiv="content-type" content="text/html; charset=utf-8" /> 

但仍然不起作用,我尝试将数据库排序规则utf8_spanish_ci中的表从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>

总名单-私立中学

您应该使用mysql\u set\u charset函数:

$link = mysql_connect(.....);
mysql_set_charset('utf8', $link);
如果您使用PDO:

new PDO("mysql:host=$host;dbname=$name;charset=utf8", $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));

您应该使用mysql\u set\u字符集函数:

$link = mysql_connect(.....);
mysql_set_charset('utf8', $link);
如果您使用PDO:

new PDO("mysql:host=$host;dbname=$name;charset=utf8", $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));

问题是程序本身,试图将文件命名到数据库中,但没有转换器。如果您保存屏幕上任何内容的名称,这取决于许多问题,甚至是浏览器语言或操作系统。它将显示为您描述的“时髦”�" 问号,因为它只保存您提示文件名的字段名中的任何内容。我在任何地方都遵循所有建议。正确设置标题并尝试所有可用字符集。甚至使用google字体和任何可用字体在我的数据库中正确显示和保存这些字符,但没有成功

一个旧的程序修复了将ñ转换为UNICODE HTML实体的问题:
Ñ;
对于ñ,您可以使用从MySQL到应用程序的来回过程

因此,您只需要将包含字母ñ和ñ的数据库字符串更改为相应的UNICODE,以便使用UTF字符集在浏览器上正确反映。在我的例子中,我解决了我的问题,将数据库中所有姓氏中的所有myñ和ñ替换为相应的UNICODE

而不是将数据库中的文件名保存为

“niño.jpg”尝试将其保存为“ni
ñ;
o.jpg”

请记住,您需要以另一种方式检索文件,因为记录的文件名将是“ni
和#241;
o.jpg”,而不是“niño.jpg”。可能需要添加一个名为“displated_file_name”的额外字段,以便您可以看到保存的正确文件名西班牙语拼写……您需要在您的环境中进行测试


我不建议使用国际代码保存文件(有些操作系统一开始可能无法正常工作),但这完全取决于您,您的选择。我希望这会有所帮助。祝您好运,编码愉快!

问题在于程序本身,试图将文件命名到数据库中,但没有翻译程序。如果您保存屏幕上任何内容的名称,这取决于许多问题,甚至是浏览器语言或操作系统。它将显示在您的屏幕上用“时髦”来描述�“问号,因为它只保存您提示文件名的字段名中的任何内容。我在任何地方都遵循所有建议。正确设置标题并尝试所有可用字符集。甚至使用google字体和任何可用字体在我的数据库中正确显示和保存这些字符,但没有成功

一个旧的程序修复了将ñ转换为UNICODE HTML实体的问题:
Ñ;
对于ñ,您可以使用从MySQL到应用程序的来回过程

因此,您只需要将包含字母ñ和ñ的数据库字符串更改为相应的UNICODE,以便使用UTF字符集在浏览器上正确反映。在我的例子中,我解决了我的问题,将数据库中所有姓氏中的所有myñ和ñ替换为相应的UNICODE

而不是将数据库中的文件名保存为

“niño.jpg”尝试将其保存为“ni
ñ;
o.jpg”

请记住,您需要以另一种方式检索文件,因为记录的文件名将是“ni
和#241;
o.jpg”,而不是“niño.jpg”。可能需要添加一个名为“displated_file_name”的额外字段,以便您可以看到保存的正确文件名西班牙语拼写……您需要在您的环境中进行测试


我不建议使用国际代码保存文件(有些操作系统一开始可能无法正常工作),但这完全取决于您的选择。我希望这会有所帮助。祝您好运,编码愉快!

我尝试将我的数据库脚本改为:$conn=new-PDO(“mysql:host=localhost;dbname=test;charset=utf8”、'root'、'',array(PDO::MYSQL_ATTR_INIT_命令=>“设置名称‘utf8’”);但仍然没有做任何事情,上传时的结果是相同的,也可以将文件编码更改为utf8,这是什么意思?您是指设置中的首选项吗?它设置为utf8 alreadyUse mysqli。Php的mysql扩展已弃用并从Php中删除。7我尝试将数据库脚本更改为:$conn=new PDO(“mysql:host=localhost;dbname=test;charset=utf8“,'root','',数组(PDO::mysql\u ATTR\u INIT\u COMMAND=>“SET NAMES'utf8');但仍然没有做任何事情,上传时的结果是相同的,也可以将文件编码更改为utf8,这是什么意思?您是指设置中的首选项吗?它设置为utf8 alreadyUse mysqli。Php的mysql扩展已弃用并从PHP7中删除