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

-1

私はいつもこれを使用し、うまくいきました。一重引用符なしでも試してみてください(今はコードが表示されません):

mysql_query("SET NAMES 'utf8'");

編集

mysql_set_charset()例外をスローしません。手続き型です。でエラーが見つかりますmysql_error()

文字セットを変更するには、mysql_set_charset を使用することをお勧めします。を使用mysql_query()して設定する ( などSET NAMES utf8) ことはお勧めしません。また、mysql_set_charset は PHP 5.5.0 から非推奨になっているため、mysqli_set_charset を使用することをお勧めします。したがって、mysql_query を使用して文字セットを設定したり、mysql_set_charset を使用したりしないでください。代わりに mysqli_set_charset を使用してください!

于 2013-06-13T07:21:58.920 に答える