Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.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_Html_Mysql - Fatal编程技术网

Php 字符编码为࿽;

Php 字符编码为࿽;,php,html,mysql,Php,Html,Mysql,我正在使用php+mysql制作一个动态页面。我的数据库有“Make”,编码为�我认为这是一个编码问题,所以,我尝试使用&,但这也没有帮助当处理任何字符集时,将所有内容都设置为相同很重要。您提到将PHP和HTML头都设置为UTF-8,这通常会起作用,但da也很重要tabase连接、实际数据库及其表也使用UTF-8编码 连接 您还需要在连接本身中指定字符集 PDO(在对象本身中指定): $handler=newpdo('mysql:host=localhost;dbname=database;c

我正在使用php+mysql制作一个动态页面。我的数据库有“Make”,编码为�我认为这是一个编码问题,所以,我尝试使用
&
,但这也没有帮助当处理任何字符集时,将所有内容都设置为相同很重要。您提到将PHP和HTML头都设置为UTF-8,这通常会起作用,但da也很重要tabase连接、实际数据库及其表也使用UTF-8编码

连接

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

  • PDO(在对象本身中指定):
    $handler=newpdo('mysql:host=localhost;dbname=database;charset=utf8','username','password',array(PDO::mysql\u ATTR\u INIT\u COMMAND=>“SET CHARACTER SET utf8”);
  • MySQLi:(在创建连接后直接放置)
    • 对于OOP:
      $mysqli->set_字符集(“utf8”);
    • 对于过程:
      mysqli\u set\u字符集($mysqli,“utf8”);

      (其中,
      $mysqli
      是mysqli连接)
  • MySQL(无润滑,应转换为PDO或MySQLi):(在创建连接后直接放置)
    mysql\u set\u字符集(“utf8”);
数据库和表

您的数据库及其所有表必须设置为UTF-8。请注意,字符集与排序规则不完全相同(请参阅)

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

文件编码

文件本身也可能需要UTF-8编码。如果您使用记事本++编写代码,可以在任务栏上的“格式”下拉列表中完成(您应该使用Convert to…,因为这不会弄乱当前文件),但任何像样的IDE都有类似的选项。您应该使用
UTF-8 w/o BOM
(请参阅)

其他

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

如果你按照上面所有的指示去做,你的问题很可能会得到解决。如果没有,你可以看看这个StackOverflow帖子:。

如果� 在数据库列本身中,将原始字符更改为以下内容:


我甚至尝试了
标题('Content-type:text/plain;charset=utf-8');
标题('Content-type:text/html;charset=utf-8'))
但仍然是同一个问题我很确定这是一个编码问题,但是你应该有更多的信息来解决它。mysql中的字符可以吗?正确的字符是什么?那里使用的编码是什么?具体写到HTML中的是什么(� 只是因为它无效,所以不能显示它,但它没有显示它无效的原因)?
PDO::MYSQL\u ATTR\u INIT\u COMMAND=>“SET CHARACTER SET UTF8”
解决了问题,其余的事情已经准备好了
ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;