代码之家  ›  专栏  ›  技术社区  ›  Andres SK

特殊人物奇怪的行为

  •  0
  • Andres SK  · 技术社区  · 15 年前

    我的utf-8 mysql数据库中有这个字符串: “普鲁布·德·E·E·E”

    当我像纯文本一样打印它时,一切都正常,但是如果我在输入、文本区域等中加载相同的字段,它将变为:“prueb__e__

    我如何解决这个问题?=(

    1 回复  |  直到 15 年前
        1
  •  1
  •   Mahomedalid    15 年前

    首先,我建议您阅读以下内容: http://www.joelonsoftware.com/articles/Unicode.html (绝对最少每个软件开发人员绝对,肯定必须知道Unicode和字符集(没有借口!)乔尔·斯波斯基)真的很有用。

    如果是mysql,可以通过“set names'utf8”设置连接中的默认字符集。例如,在Zend_框架中($db->query(“set name'utf8'”);)

    另一个选项是在数据在屏幕上打印之前添加一个过滤器。我做了双手功能…

    function utf8encode ($subject, $action = '//TRANSLIT')
    {
       if ( @iconv( 'UTF-8', "UTF-8{$action}", $subject) == $subject ) {
                        #-- the value it's utf8
      } else {
                        $subject = utf8_encode ($subject);
      }
    
     return $subject;
    

    }

    function utf8decode ($subject, $action = '//TRANSLIT')
    {
        if ( @iconv( 'UTF-8',  "UTF-8{$action}", $subject) == $subject ){
                          $subject = utf8_decode ($subject);
        } else {
                          #-- the value is probably ISO-8859-1
        }
    
     return $subject;
    }