字符编码为

时间:2015-12-26 13:00:44

标签: php html mysql

我使用php + mysql制作动态页面。我的数据库有“将其编码为 在网页中制作。我虽然这是一个编码问题所以,我尝试使用<html lang='en' dir='ltr'>&amp; <meta charset="utf-8" />但这也无济于事

2 个答案:

答案 0 :(得分:2)

在处理任何字符集时,将所有内容设置为相同非常重要。您提到将PHP和HTML标头都设置为UTF-8,这通常可以解决问题,但同样重要的是数据库连接,实际数据库及其表也使用UTF-8进行编码。

<强>连接

您还需要在连接本身中指定字符集。

  • PDO (在对象本身中指定):
    $handler = new PDO('mysql:host=localhost;dbname=database;charset=utf8', 'username', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET UTF8"));
  • MySQLi :(创建连接后直接放置)
    • 对于OOP:$mysqli->set_charset("utf8");
    • 对于程序:mysqli_set_charset($mysqli, "utf8");
      (其中$mysqli是MySQLi连接)
  • MySQL 已删除,您应该转换为PDO或MySQLi):(在创建连接后直接放置)
    mysql_set_charset("utf8");

数据库和表格

您的数据库及其所有表格必须设置为UTF-8。请注意,charset 与归类完全相同(请参阅this post)。

您可以通过为每个数据库和表格运行一次下面的查询(例如在phpMyAdmin中)来实现这一目标

ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

文件编码的

文件本身也可能需要UTF-8编码。如果您使用Notepad ++编写代码,可以在任务栏的“格式”下拉菜单中完成(您应该使用转换为... ,因为这不会弄乱您的当前文件) - 但任何体面的IDE都有类似的选择。您应该使用UTF-8 w/o BOM(请参阅this StackOverflow question)。

其他

  • 您的数据库中可能已经有未使用UTF-8编码的值。手动更新它们可能会很麻烦,并且可能会耗费大量时间。如果是这种情况,您可以使用类似ForceUTF8的内容并循环访问数据库,使用该函数更新字段。

如果你按照上面的所有指示,你的问题很可能会得到解决。如果没有,您可以查看此StackOverflow帖子:UTF-8 all the way through

答案 1 :(得分:0)

如果 在您的数据库列中,请将原始字符更改为以下内容:

http://www.w3schools.com/charsets/ref_html_ansi.asp