Php、Mysql和UTF8有问题吗

Php、Mysql和UTF8有问题吗,php,encoding,utf-8,character-encoding,Php,Encoding,Utf 8,Character Encoding,问题,简单又烦人 我只是想打印一个从mysql数据库收集的名字列表 PHP文件保存在utf8中,数据库和表设置为使用utf8。例如,仍然是“å,ä,ö”,输出为�. 真不敢相信我还有这个问题 当然,Latin1解决了这个问题。问题是,我必须使用utf8,因为我正在进行一些json_编码,以便将数据发送到ajax脚本 你知道到底哪里不对吗 我是否应该在返回数据之前将其转换为utf8?似乎有点奇怪,我应该把utf8\u通用\u ci转换成utf8\u unicode\u ci 连接到数据库后,

问题,简单又烦人


我只是想打印一个从mysql数据库收集的名字列表

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

当然,Latin1解决了这个问题。问题是,我必须使用utf8,因为我正在进行一些json_编码,以便将数据发送到ajax脚本

你知道到底哪里不对吗


我是否应该在返回数据之前将其转换为utf8?似乎有点奇怪,我应该把
utf8\u通用\u ci
转换成
utf8\u unicode\u ci

连接到数据库后,请尝试运行
设置名称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中有这个(或通过header())

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

有两件事要做

  • 确保您的HTML标头正在发送正确的字符集:

  • 将名称添加到数组时使用。你的电话线应该是

    $guests[]=array\u map('utf8\u encode',$row)


  • 抱歉,但这没有任何区别。@Xavio,在phpMyAdmin中运行查询会返回正确编码的数据吗?如果是这样的话,那一定是因为。。。尝试运行
    mysqli\u set\u字符集($link,“UTF8”)
    。。。如果是UTF8,还要检查您的表排序规则。。。设置为UNICODE非通用,然后重试…是的,在PhpMyAdmin中看起来不错。如果我甚至在从函数返回之前就打印r,它看起来会。。。。哦那个小片段真的做到了!把它放在我的sqlConnect()函数中。现在一切正常。但奇怪的是我需要它?。。因为我已经把一切都设置为utf8。但我要检查一下Unicode/General。这并不奇怪,这是连接到数据库后要做的第一件事,您需要将连接排序规则设置为UTF8(PHP和SQL数据库之间的连接)。。。很高兴它成功了。如果我直接把名字加进去,比如说,PhpMyAdmin?那是个坏主意吗?@Jaitsu,这样做不好。@Jaitsu,据我所知,数据已经是UTF8,iconv是比UTF8_编码好得多的解决方案。
    UTF8_编码
    据我所知,它对编码不同字符集中的数据很有用,即当连接的字符集与所需的字符集不同时,查看
    iconv
    看起来确实是一个更好的选择发布代码图片会迫使其他人重新键入所有代码,如果他们想测试它,并且几乎不会提供附加值。