Dec 14

さくらインターネットでPHP+Mysql 文字コードをUTF8で使うメモ(文字化け対策)

php, さくら(サーバ) コメントはページの下に

さくらインターネットのスタンダードプランでは、Mysql5.1.30だった。
たいして考えないでCREATE TABLEすると、照合順序がujis_japanese_ci(EUC-JP)になってしまう。
utf8_general_ciを使いたいところです。文字化け防止の手順を。
DBは契約したときに1つだけ割り当てられてますが、DB自体を設定することはできないので、テーブル作成時、mysql_connect()した後、mysql_select_db()前にutf8に設定する必要があるようです。

CREATE TABLE時

テーブルの照合順序をutf8_general_ciに設定する。

PHP:
  1.  
  2. $sql = "CREATE TABLE `tablename` (data1,data2,...) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;";
  3. $link = $db->Query( $sql );

INSERTやSELECT時

以下のように、接続した後にSET NAMES utf8をセットすると、INSERT,SELECTなどの時うまく日本語が文字化けせずに入りました。

PHP:
  1. $link = mysql_connect( $host, $user, $password );
  2.  
  3. mysql_query( "SET NAME utf8", $link );
  4.  
  5. mysql_select_db( $dbname );

charset, collateはconfigでdefineきっておけば良いですね。

参考リンク

MySQL 6.5.3 CREATE TABLE 構文
http://dev.mysql.com/doc/refman/4.1/ja/create-table.html

さぼてん:PHP+Mysql+UTF-8で文字化け対策
http://saboten009.blogspot.com/2008/01/phpmysqlutf-8.html

前後の記事

関連した記事

トラックバック&Pingback

この記事が気に入ったりした方は、自分のブログを書くときに「下のURLをコピーして、自分のブログ投稿時のトラックバック欄にペースト」してください。つながります。
URL:

コメント ( 0 )

コメント記入欄

Copyright(c) 小山太郎.com All rights reserved.