【问题标题】:How is utf8 data supposed to look when stored in a database?当存储在数据库中时,utf8 数据应该如何看待?
【发布时间】:2011-03-08 00:14:43
【问题描述】:

我需要一些帮助来了解 utf8 数据在存储在数据库中时的外观。

我正在使用mysql和php,数据库设置为utf8,列“p_name”的排序规则设置为“utf8_unicode_ci”。

当我插入数据时,我通过这个函数传递它

function convert_charset($in_str) 
    { 
      $cur_encoding = mb_detect_encoding($in_str) ; 
      if($cur_encoding == "UTF-8" && mb_check_encoding($in_str,"UTF-8")) 
        return $in_str; 
      else 
        return utf8_encode($in_str); 
    }

然后将其插入数据库。当我在 php 中读取数据并在浏览器中显示时,我在页面中使用 utf8,并且数据显示正确,但是我怀疑可能有问题。

以法语单词éditez 为例,它应该是这样的。但是,当我查看它时,在我的数据库中,相同的单词被存储为éditez。这是正确的吗?这是 mysql 应该如何存储该单词,还是我设置错误?

这是我已经设置的:

  1. php.ini --> 设置为 utf8
  2. 数据库 --> 设置为 utf8
  3. 表格列 --> 设置为 utf8_unicode_ci
  4. html 页面 --> 设置为 utf8。

【问题讨论】:

  • 尝试将default-character-set=utf8 添加到您的 my.ini 中,然后再次添加您的数据。
  • 如何从数据库中检索数据?
  • 您似乎试图在不理解 utf-8 的东西上显示 utf-8,那么您如何查看这些数据?
  • @Gumbo:这太疯狂,它可能会起作用......

标签: mysql encoding utf-8


【解决方案1】:

在您的数据库连接设置函数之后立即尝试此查询

mysql_query('SET NAMES "utf8"');

【讨论】:

  • 太棒了。非常感谢!
【解决方案2】:

您是否尝试过将连接字符串也设置为 UTF8?

Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword; CharSet=UTF8;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 2015-03-16
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    • 2011-04-02
    • 2021-09-18
    相关资源
    最近更新 更多