php*_*015 3 php mysqli utf-8 character-encoding cyrillic
有很多帖子专门讨论这个主题,我觉得问这个问题很愚蠢。
\n\n但是,我完全不知道问题出在哪里。
\n\n我正在尝试通过 PHP (html) 表单将特殊字符(西里尔文、斯堪的纳维亚文等)插入 MySQL 数据库。
\n\n字符如:\xc3\x84、\xc3\x96、\xc3\x85,以及俄语字母等。
\n\n根据本论坛之前的帖子,我尝试了以下所有操作(在 MySQL 数据库连接字符串之后插入):
\n\n mysqli->set_charset("utf8");\nRun Code Online (Sandbox Code Playgroud)\n\n这不起作用,所以我尝试了以下方法:
\n\n mysqli_query("set names \'utf8\'");\n mysqli_query("set charset \'utf8\'");\nRun Code Online (Sandbox Code Playgroud)\n\nPHP 不推荐这些。但是,无论如何我都尝试过,但仍然没有运气。
\n\n(我所有的数据库、表和列都整理为: UTF8_general_ci)
\n\n此外,我所有的 html 表单都有以下内容:
\n\n <meta charset="utf-8">\nRun Code Online (Sandbox Code Playgroud)\n\n所以,我完全不知道自己做错了什么。一旦数据被发送到数据库,它就会(在数据库本身中)显示为垃圾字符(问号和其他象形文字)。
\n\n然而,有趣的是:
\n\n(a) 当我在我的网站上查看数据时,它显示正确;
\n\n(b) 当数据在电子邮件正文中发送时,它也能正确显示
\n\n那么......为什么它在数据库本身中无法正确显示?
\n处理特定字符集(如 UTF-8)时,将整行代码设置为相同的字符集非常重要。以下是如何遵循这一点的一些指导。
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />header('Content-Type: text/html; charset=utf-8');$connection->set_charset("utf8");连接后立即)还要确保您的数据库和表设置为 UTF-8,您可以通过以下查询来做到这一点(在数据库中,只需执行一次):
ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
请记住,所有内容都需要设置为 UFT-8 字符代码。如果某些内容可以设置为 UFT-8(或其他字符集,请检查 PHP 文档 (php.net)),则应将其设置为与其他所有内容相同的字符集。
| 归档时间: |
|
| 查看次数: |
3257 次 |
| 最近记录: |