【问题标题】:Character set encoding issue字符集编码问题
【发布时间】:2011-09-29 11:26:01
【问题描述】:

所有,我有一个古老的字符编码问题......

我有一个字段设置为 utf8_unicode_ci 的 mySQL DB。我的 PHP 页面作为标题条目 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />。当我使用简单的表单将带有西里尔字符的数据发布到数据库时,例如'гыдлпоо',字符在文本区域中正确显示,并添加到正确显示的数据库中。

从数据库中获取字符时,我的页面只显示一系列问号。我用过mb_detect_encoding($content, "UTF-8,ISO-8859-1", true);,内容是UTF-8,但是字符不显示。

我已经四处搜索(包括 SO)并尝试了许多解决方案,但均无济于事 - 非常感谢任何帮助。

非常感谢

【问题讨论】:

  • 在从数据库中获取数据之前,您是否尝试过使用 SET NAMES 'utf8' 查询?
  • 这让我离我需要去的地方更近了...我已经阅读了不应该使用的方法 - 这是正确的吗?
  • 您也可以使用 mysql_set_charset() 函数 - 至少他们在手册中说这是首选方式php.net/manual/en/function.mysql-set-charset.php
  • 以防万一,您能发布您的表格定义吗?您可以通过执行查询 SHOW CREATE TABLE table_name 来获取它
  • 这行得通-如果您将其作为答案发布,我将奖励您作为回答者

标签: php mysql character-encoding special-characters


【解决方案1】:

在 mysql_connect() 和 mysql_select_db() 之后立即执行此操作:

mysql_query("SET NAMES 'utf8'");

【讨论】:

  • 是否有通过 PDO 连接的等价物?
【解决方案2】:

在从数据库中获取数据之前尝试使用mysql_set_charset() 函数。

【讨论】:

    【解决方案3】:

    您是否尝试过将表单与

    一起使用
    enctype="multipart/form-data"
    

    ? 这可能会有所帮助.. 文本不必在您的数据库中可读.. 当它们被保存时,它们应该是 utf8 编码.. 当您再次输出字符串时,您需要它们看起来很好

    【讨论】:

    • 不高兴-显示时不再有问号-但结果仍然不存在:�? �?омпании (应该是ОКомпании)
    猜你喜欢
    • 2014-01-28
    • 1970-01-01
    • 2021-05-15
    • 2011-03-24
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 2012-02-27
    相关资源
    最近更新 更多