【问题标题】:Get Chinese characters from MySQL从 MySQL 中获取汉字
【发布时间】:2015-03-28 20:17:50
【问题描述】:

我正在尝试显示我保存在 MySQL 数据库中的中文字符,该数据库保存在 utf8_unicode_ci 类型下。我在网上看到了几种解决方案,但没有任何效果。

下面是我的连接文件:

$conn = mysql_connect("localhost","root","password");
mysql_set_charset('utf8',$conn);
mysql_query("SET CHARACTER SET utf8 ");
mysql_select_db("database");

以下是我的查询:

mysql_query("SET character_set_results=utf8", $conn);

$sql = mysql_query("select * from webdata",$conn);

但它仍然显示????。有什么想法吗?

【问题讨论】:

  • 我认为问题在于您无法在计算机上显示中文字符来解释该语言。您可能需要添加中文作为输入语言才能做到这一点,但我不确定。
  • 你的 html 中有这个 吗?如何显示数据?
  • 感谢您的回复。但是如果我将字符直接编码到我的 HTML 中,我就可以显示这些字符。但是由于某种原因,当我尝试从 MySQL 中提取它时,它没有显示。
  • 我确实有元字符集。我使用 $sql['chinese_data']; 显示它
  • 那么你的问题解决了吗?如果是这样,请将其发布,以便我们知道您做了什么。

标签: php mysql utf-8


【解决方案1】:

如何解决...

当我遇到类似问题时,我首先使用

在 php 中显示我的文本编码
echo mb_detect_encoding ( $text );

它显示了来自我的查询的文本的编码。这表明当我的数据库中有中文或俄文字符时,我正在从 mysql_query 获取 ASCII。

我所做的更改是在 mysql_connect 之后添加了以下内容

mysql_set_charset('UTF8');

我的数据库是utf8_unicode_ci collat​​ion,可以看到汉字。

所以,如果 mb_detect_encoding 现在为您的文本提供 UTF8,那么您将能够显示中文字符。

下一步是确保您传递给浏览器的内容具有正确的标题...

header('Content-Type: text/html; charset=UTF-8');

将上述代码放在 php 代码的顶部,以确保浏览器期待您的编码。

现在应该是问题了,但理想情况下,您应该使用 PDO 或 mysqli 而不是 mysql_connect 方法。在这种情况下,等效的程序样式命令是..

$link = mysqli_connect('localhost', 'my_user', 'my_password', 'test');
mysqli_set_charset($link, "utf8");

其中 $link 相当于您与数据库的连接。

【讨论】:

    【解决方案2】:

    这应该就是你所需要的。繁简体中文均适用

     1. Make sure your table is set to COLLATION utf8_general_ci
     2. $con = new mysqli("localhost",$username,$password,$database) or die("Error " . mysqli_error($con)); $con->query("SET NAMES 'utf8'");
     3. <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    

    【讨论】:

      【解决方案3】:

      当您将输出打印到 HTML 时,它在哪里显示“???”? 如果是这样,请尝试将这一行添加到&lt;head&gt; 元素

      <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
      

      希望对你有所帮助。

      编辑 看来您需要在以下位置声明 UTF8:

      1. character_set_results = 'utf8',
      2. character_set_client = 'utf8',
      3. character_set_connection = 'utf8',
      4. character_set_database = 'utf8',
      5. character_set_server = 'utf8'"

      结帐 PHP UTF8 not displaying chinese characters properly

      【讨论】:

      • 是的,当我输出到HTML时,我添加了meta标签,但还是一样。
      • 数据库中的数据中文存储是否正确??
      • 是的,我查了数据库里的数据,显示的是汉字
      • 你能把你的整个 添加到问题中吗?
      • 你应该考虑使用utf8mb4而不是utf8,因为有几个4字节的汉字。
      猜你喜欢
      • 2011-08-31
      • 1970-01-01
      • 2011-01-15
      • 1970-01-01
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多