sql >> データベース >  >> RDS >> Mysql

phpMyAdminでUTF-8文字を表示するにはどうすればよいですか?

    残念ながら、phpMyAdminは、文字セットについてMySQLと正しく通信する最初のphpアプリケーションの1つです。問題は、データベースに最初から正しいUTF-8文字列が格納されていないことが原因である可能性があります。

    phpMyAdminで文字を正しく表示するには、データをデータベースに正しく保存する必要があります。ただし、データベースを正しい文字セットに変換すると、MySQLが提供する文字セット関連の機能を認識しないWebアプリが破損することがよくあります。

    質問してもいいですか:MySQL>バージョン4.1ですか?データベースはどのWebアプリ用ですか? phpBB?データベースは古いバージョンのWebアプリから移行されましたか、それとも古いバージョンのMySQLから移行されましたか?

    使用しているWebアプリが古すぎてサポートされていない場合は、兄弟にしないことをお勧めします。データベースを実際のUTF-8に変換するのは、Webアプリがデータベースを正しく読み取ることができると確信している場合のみです。

    編集:

    MySQLは>4.1です。つまり、文字セットに対応しています。データベースの文字セット照合設定は何ですか? latin1を使用していると確信しています 、ASCIIのMySQL名であり、UTF-8テキストを「バイト」でデータベースに格納します。

    文字セットに依存しないクライアント(つまり、mysql-cliおよびphp-mod-mysql)の場合、文字はデータベースとの間でバイトとして転送されるため、正しく表示されます。 phpMyAdminでは、バイトが読み取られてASCII文字として表示されます。これは、ごちゃごちゃしたテキストのようです。

    アジアの多くの地域で、MySQL 4.0が廃止された数年前(2005年?)に数え切れないほどの時間が費やされていました。問題やごちゃごちゃしたデータに対処するための標準的な方法があります:

    1. データベースを.sqlとしてバックアップします
    2. UTF-8対応のテキストエディタで開き、正しく表示されることを確認します。
    3. charset collation latin1_general_ciを探します 、latin1を置き換えます utf8へ 。
    4. 新しいSQLファイルとして保存します。バックアップを上書きしないでください
    5. 新しいファイルをインポートすると、phpMyAdminで正しく表示されるようになり、Webアプリの日本語が質問マークになります。それは正常です。
    6. php-mod-mysqlに依存するphpWebアプリの場合、mysql_query("SET NAMES UTF8");を挿入します。 mysql_connect()の後 、これで疑問符はなくなります。
    7. 次の構成を追加しますmy.ini mysql-cliの場合:

      # CLIENT SECTION
      [mysql]
      default-character-set=utf8
      # SERVER SECTION
      [mysqld]
      default-character-set=utf8
      

    MySQLの文字セットの詳細については、マニュアルを参照してください: http://dev.mysql.com/doc/refman/5.0/en/charset-server.html

    Webアプリがphp-mod-mysqlを使用してデータベースに接続していると想定していることに注意してください(したがって、mysql_connect() 関数)、php-mod-mysqlは私が考えることができる唯一の拡張機能であるため、今日でも問題を引き起こしていると思います。

    phpMyAdminはphp-mod-mysqliを使用してMySQLに接続します。フレームワーク*に切り替えてphpプロジェクトを開発するため、使用方法を学びませんでした。あなたもそうすることを強くお勧めします。

    • 多くのフレームワーク、例: CodeIgniter、Zendは、mysqliまたはpdoを使用してデータベースに接続します。 mod-mysql関数は、パフォーマンスとスケーラビリティの問題を引き起こす廃止されたものと見なされます。また、プロジェクトを特定の種類のデータベースに結び付けたくない場合もあります。


    1. SQL Server(T-SQL)で角かっこを使用して負の値をフォーマットする方法

    2. Mac OS XでPostgreSQLサーバーを起動するにはどうすればよいですか?

    3. ストアド関数またはプロシージャを呼び出しても、変更は挿入および永続化されません

    4. 単純なPostgreSQLインサートを機能させることができません