0
 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 土地,并且在上mysql_set_charset('utf8');线之后什么也不做。当该行被注释掉时,一切正常。我去哪里寻找错误日志?我不是服务器上的系统管理员,所以我不确定 php/mysql 是如何配置的。这是一个 linux 机器,我假设它是一些标准配置,但是我在 php 附近的任何地方都找不到日志目录,所以,我不清楚我能做些什么来弄清楚它不喜欢什么.

哦,如果没有这一行,文本会返回一个带有问号的黑色菱形,其中每个字符都是 UTF-8 ......所以......这就是我真正想要解决的问题。也许有不同的方法?

4

2 回答 2

0

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

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

这可能是您问题的根源。

于 2013-07-23T18:49:32.213 回答
-1

我一直使用这个并且工作得很好。也试试不带单引号(我现在看不到代码):

mysql_query("SET NAMES 'utf8'");

编辑

mysql_set_charset()不会抛出异常。这是程序风格。你会发现错误mysql_error()

请注意, 使用 mysql_set_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!

于 2013-06-13T07:21:58.920 回答