代码之家  ›  专栏  ›  技术社区  ›  Hans

php&mysql将非Unicode转换为Unicode

  •  2
  • Hans  · 技术社区  · 14 年前

    我在我们的网站上有这样的角色:fmnyom

    这是一个街道地址,用另一种语言输入(尽管我不知道是哪种语言)。这是数据库设置:

    mysql 4.1.2log
    charset cp1252 West European (latin1)
    

    我使用的是php,但是没有mbstrings()(虽然我在这个地址上没有进行字符串转换,但是回送)。

    如果我将mysql字符集从cp1252改为utf-8并确保使用了 header( 'Content-Type: text/html; charset=UTF-8' ); 那会改善我的处境吗?或者,数据托管是因为它保存在CP1252字符集中,我无能为力吗?原始数据库创建于2002年,此后一直在使用/扩展。我们已经升级了服务器并重新导入了转储文件,但是我承认我并没有给charset多加考虑。

    如果我是hosed,我可能只会删除这些字段中的文本,但我希望支持unicode,所以如果我发出 ALTER database_name DEFAULT CHARACTER SET utf8; 这能确保未来的多字节编码被正确保存吗,至少从公式中去掉了存储空间(让我担心PHP)?

    谢谢-

    1 回复  |  直到 14 年前
        1
  •  1
  •   shamittomar    14 年前

    1)将所有字符集转换为utf8:

    ALTER database_name DEFAULT CHARACTER SET utf8;
    

    2)在页面上任何查询之前发布:

    mysql_query("set names 'utf8'");
    

    3)使用此标题:

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

    4)插入此元标记:

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

    5)另外,请阅读: http://www.oreillynet.com/onlamp/blog/2006/01/turning_mysql_data_in_latin1_t.html