PHP(mySQL,HTML) 日本語文字

日本語文字を扱う方法です。
デフォルト設定で文字化けしてしまう場合は、
設定が必要となります。

基本UTF-8にしとけば問題ないべ?って考えてる
僕なのでUTF-8の設定を書いて置きます。

ちなみに状況としては、
・Apache2.0インストール済
・PHP5.2インストール済
・mySQL5.2インストール済

★ブラウザの表示文字コード

Internet Explorer , Google Chrome の表示文字コード
UTF-8になっているか確認します。
Eclipseの内部ウェブブラウザでも同様です。
(右クリックエンコードより)
選択しても切り替わらない場合は表示が問題ではない

mySQLに作成したデータベーステーブルの構造

データベースのテーブルには、文字コードを持つそう。
Collation:utf8」のようになってるか
確認する必要性があります。

mySQLに設定されているデフォルト文字コード

mysqlターミナルで以下のコマンドを実行して確認。

mysql> show variables like 'character_set%';

これによりValuesが「utf8」になっているか確認。
「latin1」とかデフォルトでなる場合あるらしい、それはまずい。

設定は「my.cnf」でやるそう(自分はやらなかったので記載しません)

★データベースのタプル

データベースに登録されたタプルが
元々、文字化けたものが入ってるか確認する必要がある。

MySQL Command Line Client はオプションを見る通り、
MS932が設定されていて変更できないので、
コンソール上では、日本語が文字化けして表示される
(UTF-8かテストしたい場合ではあるが)

GUIツール上でSQLを実行し、
タプルを取り出して確認することがよい。
PHP等の設定の前にmySQLデータベースのタプルで
ミスってる場合があるよう

php.iniにおいて、特にmbstringの設定

PHPがデフォルトでUTF8を使ってるか確認する。

phpinfo();のプログラムを書いて
実行し設定情報を確認するとよい。

ちなみに以下の設定がUTF-8だと好ましいようなので
示しておく。

[php.iniのmbstringなど]

参考:
http://wiki.ohgaki.net/index.php?PHP%2Ftips%2F%E6%8E%A8%E5%A5%A8php.ini%E8%A8%AD%E5%AE%9A
http://www.phpbook.jp/install/phpini/index5.html

以下全部コメントアウトし忘れチェックもすること

1. defalut_charset="UTF-8";
2. extension=php_mbstring.dll
3. mbstring.languages = Japanese
4. mbstring.internal_encoding = UTF-8
5. mbstring.http_input = pass
6. mbstring.http_output = pass
7. mbstring.encoding_translation = Off
8. mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
9. mbstring.substitute_character = none;

PHPプログラムコード

PHPプログラム上で mysql_query(); を呼び出すときの
文字コードを指定しておくことが大事らしい。

データベーススキーマをしてから (cf. mysql_select_db)

mysql_query("SET NAMES UTF8");

をすることでmysql_queryがUTF8で実行されるよう。

PHPプログラム上で以下のようなメソッドが
文字コード操作上で使ったりするらしいので、
見ておくとよいかも。

mb_check_encoding();
mb_convert_encoding();


何か設定を変更したら保存。
サーバーに影響する変更であれば、Apacheの再起動が必要です!