无法找到为什么我无法在php中将字符集设置为UTF-8

时间:2013-06-13 07:17:56

标签: php mysql utf-8

 try{
        echo("trying");//this prints
        mysql_set_charset('utf8'); //if I remove this everything is fine
        echo("success"); //this fails
    }catch(Exception $e){
        echo "problem $e";//this doesn't print
        throw new Exception("can't set charset",0, $e);//this does nothing
    }

我在我的其他工作代码中引入了西班牙语字符,而且我遇到了一个黑洞。我不知道问题是什么,因为php只是进入la-la land并且在mysql_set_charset('utf8');行之后不再做任何事情。当该行被注释掉时,一切都很完美。我在哪里寻找错误日志?我不是服务器上的系统管理员,所以,我不确定php / mysql是如何配置的。这是一个linux盒子,我假设它在一些标准配置中,但我没有在php附近的任何地方找到一个日志目录,所以,我不清楚我能做些什么来弄清楚它不喜欢这里。

哦,如果没有这一行,文字会以黑色钻石为特色,其中包含一个问号,用于UTF-8的每一个角色......所以...这就是我实际想要解决的问题。也许有不同的方法?

2 个答案:

答案 0 :(得分:0)

不确定,但PHP手册说mysql_set_chartset将来会被弃用并删除。

http://php.net/manual/en/function.mysql-set-charset.php

可能是您问题的根源。

答案 1 :(得分:-1)

我总是使用它并且工作正常。尝试也没有单引号(我现在看不到代码):

mysql_query("SET NAMES 'utf8'");

修改

mysql_set_charset()不会抛出异常。这是程序风格。您会在mysql_error()找到错误。

请注意 使用mysql_set_charset是更改charset的首选方法。建议不要使用mysql_query()来设置它(例如SET NAMES utf8)。此外,首选使用mysqli_set_charset,因为从PHP 5.5.0弃用了mysql_set_charset。因此,不要使用mysql_query来设置charset,也不要使用mysql_set_charset。请改用mysqli_set_charset!