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> 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の再起動が必要です!