Php 如何检索utf-8数据

Php 如何检索utf-8数据,php,mysql,Php,Mysql,默认情况下,我使用插入MySQL数据库排序规则latin1_swedish_ci的泰米尔语言(utf-8)。但是数据显示像是???????????。?????当我找回它的时候。我在网上学习了很多关于这个问题的知识。但解决方案没有任何用处。完全是疯了。任何人都可以帮助我。我正在使用下面的查询。给我一个简单的解决办法 <?php $con=mysql_connect('localhost','root',''); $db=mysql_select_db('nikah', $con); $

默认情况下,我使用插入MySQL数据库排序规则latin1_swedish_ci的泰米尔语言(utf-8)。但是数据显示像是???????????。?????当我找回它的时候。我在网上学习了很多关于这个问题的知识。但解决方案没有任何用处。完全是疯了。任何人都可以帮助我。我正在使用下面的查询。给我一个简单的解决办法

<?php

$con=mysql_connect('localhost','root','');

$db=mysql_select_db('nikah', $con);

$sql="select * from matrimony";
$result=mysql_query($sql) or die(mysql_error());
While($row=mysql_fetch_array($result)){
     echo $row['name'];
     }

?>

如前所述,尝试使用
mysql\u set\u charset()

编辑: 正如Jay所说的,请记住mysql扩展在PHP5.5.0中已被弃用。从php文档:

警告 该扩展在PHP5.5.0中被弃用,在PHP7.0.0中被删除。相反,应该使用MySQLi或PDO_MySQL扩展。有关更多信息,请参见MySQL:选择API指南和相关常见问题解答。此功能的替代方案包括: mysqli_集_字符集() PDO:向连接字符串添加字符集,例如charset=utf8


如前所述,尝试使用
mysql\u set\u charset()

编辑: 正如Jay所说的,请记住mysql扩展在PHP5.5.0中已被弃用。从php文档:

警告 该扩展在PHP5.5.0中被弃用,在PHP7.0.0中被删除。相反,应该使用MySQLi或PDO_MySQL扩展。有关更多信息,请参见MySQL:选择API指南和相关常见问题解答。此功能的替代方案包括: mysqli_集_字符集() PDO:向连接字符串添加字符集,例如charset=utf8


除了设置
mysql\u set\u字符集(“utf8”)
如另一个答案中所述,您可能需要调整更多设置,以完全保护自己不受损坏字符的影响

连接

连接需要知道预期的字符集。在创建连接之后,像这样指定字符集

$con = mysql_connect('localhost','root','');
mysql_set_charset("utf8");
标题

将HTML和PHP标题中的字符集设置为UTF-8

  • PHP:
    header('Content-Type:text/html;charset=utf-8')
    (PHP标题必须放在任何类型的输出(回音、空白、HTML)之前)

  • HTML:

    (HTML标题放在
    /
    标记中)

数据库和表

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

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


如果你遵循上面所有的指示,你的问题很可能会得到解决。如果没有,您可以查看此StackOverflow帖子:


mysql.*
函数自从PHP5.5(在PHP7中完全删除)以来就被弃用了了,如果可以的话,您应该这样做。
您应该选择另一个API,比如
mysqli.*
或PDO—请参阅。

除了设置
mysql\u集\u字符集(“utf8”)
如另一个答案中所述,您可能需要调整更多设置,以完全保护自己不受损坏字符的影响

连接

连接需要知道预期的字符集。在创建连接之后,像这样指定字符集

$con = mysql_connect('localhost','root','');
mysql_set_charset("utf8");
标题

将HTML和PHP标题中的字符集设置为UTF-8

  • PHP:
    header('Content-Type:text/html;charset=utf-8')
    (PHP标题必须放在任何类型的输出(回音、空白、HTML)之前)

  • HTML:

    (HTML标题放在
    /
    标记中)

数据库和表

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

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


如果你遵循上面所有的指示,你的问题很可能会得到解决。如果没有,您可以查看此StackOverflow帖子:


mysql.*
函数自从PHP5.5(在PHP7中完全删除)以来就被弃用了了,如果可以的话,您应该这样做。
您应该选择另一个API,如
mysqli.*
或PDO-请参阅。

。已在PHP7中删除。请学习使用PDO的语句,并考虑使用PDO。已在PHP7中删除。请学习使用PDO的语句,并考虑使用PDO。已在PHP7中删除。请学习使用PDO的语句,并考虑使用PDO。已在PHP7中删除。了解使用PDO的语句,并考虑使用PDO,我做了每一件事。现在我得到了这样的结果。但是我的语言是这样的உதவிக்கு நன்றி当你在数据库中查看这些字符时,它们是什么样子的?在数据库中是这样的:将所有列手动更改为utf8后,它显示உதவிக்கு நன்றி 像这个原始字体一样,但一旦备份并再次恢复,它就会出现:像这样的字符:如果在进行这些更改之前存储不正确,那么所有的列都已经是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;