遇到Php,Mysql和UTF8的问题

时间:2011-05-18 11:37:08

标签: php encoding utf-8 character-encoding

问题,简单而烦人。


我只是想打印从我的mysql数据库中收集的名单。

PHP文件保存在utf8中,数据库和表设置为使用utf8。例如,'å,ä,ö'输出为 。不敢相信我还有这个问题。

enter image description here

当然,Latin1解决了这个问题。问题是我必须使用utf8,因为我正在做一些json_encode来将数据发送到ajax脚本。

enter image description here

知道究竟什么是错的?

我应该在返回之前将数据转换为utf8吗?看起来很奇怪我应该......

2 个答案:

答案 0 :(得分:4)

utf8_general_ci转换为utf8_unicode_ci ...

连接数据库后尝试运行SET NAMES UTF8查询...

function connect($server, $database, $username, $password, $charset = "UTF8"){
    $link = mysql_connect($server, $database, $password);
    if(!$link){
        die("Unable to connect to database server.");
    }
    mysql_selectdb($database);
    if(function_exists("mysql_set_charset")){
        mysql_set_charset($charset, $link);
    }else{
        mysql_query("SET NAMES $charset");   
    }
}

还要确保在HTML中有这个(或通过标题())...

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

答案 1 :(得分:0)

要做的两件事......

  1. 确保您的HTML标头发送了正确的字符集:

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

  2. 将名称添加到阵列时使用utf_encode()。你的行应该是

    $guests[] = array_map('utf8_encode', $row);