Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 字符编码&;数据库_Php_Mysql_Phpmyadmin - Fatal编程技术网

Php 字符编码&;数据库

Php 字符编码&;数据库,php,mysql,phpmyadmin,Php,Mysql,Phpmyadmin,我在我的域中的字符编码方面遇到了一个大问题。对我来说最重要的是我不明白。我使用meta标签将所有网站设置为utf-8: 前一阵子似乎解决了一些问题。现在我看到了网站和数据库之间的问题,当用户输入他们的名字或姓氏时,它带有重音,显示不正确。但是,我运行了以下测试 我创建了一个名为“test”的测试表(我知道这很有想象力) 我编写了一个非常小的脚本,从一个文本框中获取值并将其放入这个表中,然后每次显示这个页面时都显示这个表的内容,这样我就可以看到发生了什么 以下是一些屏幕截图,首先来自页面的输出:

我在我的域中的字符编码方面遇到了一个大问题。对我来说最重要的是我不明白。我使用meta标签将所有网站设置为utf-8:

前一阵子似乎解决了一些问题。现在我看到了网站和数据库之间的问题,当用户输入他们的名字或姓氏时,它带有重音,显示不正确。但是,我运行了以下测试

我创建了一个名为“test”的测试表(我知道这很有想象力)

我编写了一个非常小的脚本,从一个文本框中获取值并将其放入这个表中,然后每次显示这个页面时都显示这个表的内容,这样我就可以看到发生了什么

以下是一些屏幕截图,首先来自页面的输出:

var_dump我从tabe“test”中获得的数据库结果>

然后是数据库本身的屏幕截图: 测试“>

所以列的类型是
first
VARCHAR(50)
,我只是像往常一样保留了设置,字符编码是拉丁语或瑞典语。在
id
4之后,我更改了它
utf8\u bin
,但这仍然没有什么区别

问题是,数据在网站上仍然显示正常,但在数据库中看起来很糟糕。这是一个问题吗?应该这样做吗?我想我的用户抱怨的问题是当它被放入电子邮件和PDF等,我认为我没有设置字符编码


欢迎提供任何帮助和建议。

当分配3列类型时,它是如何分配的?我会确保它符合
VARCHAR(n)CHARSET utf8
的要求,因为这将使您的列类型符合utf8标准,更常见的是,我看到的是UCS2(
VARCHAR(n)CHARSET UCS2
),这可能会导致以后的问题

您可以使用
NVARCHAR
(请参阅)从sql 5开始设置

要单独更改列的类型,可以使用以下命令类型:

Alter table tablename here MODIFY columnidhere newdatatypehere

比如说

Alter table mytabelforphp MODIFY oldvarcharcolumnId nvarchar(1024)


如果您需要更多信息,请告诉我:)

尝试使用
utf8\u general\u ci
。这将解决问题。

还将字符编码添加到数据库连接中 如果您有mysqli连接,请使用:

如果使用PDO,请遵循以下步骤:


创建表时,确保字符集为utf8。 创建表格my_表格( id int主键, ..... )引擎=innodb字符集=utf8

并确保您的连接正在设置utf8的字符集。这取决于您使用的每个框架

您可以将内部字符设置为utf-8/*将内部字符编码设置为utf-8*/
mb_内部_编码(“UTF-8”);选中

我只是使用phpMyAdmin接口来分配列。正如我提到的,我在id:5之前对它进行了更改,但是它似乎仍然在数据库中生成奇怪的字符。utf8\u bin是否正确使用?它在数据库中看起来仍然很奇怪(如上所示)-这正常吗?谢谢,我在连接时将字符集设置为utf8\u general\u ci,并将实际数据库和行设置为utf8\u general\u ci。当你浏览数据库连接教程时,他们从来不会告诉你这一点!