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