[Codeigniter-users] 1.6.0 と MySQL文字コード

Zurück zum Archiv-Index

千葉豊 yutak****@gmail*****
2008年 2月 3日 (日) 15:30:14 JST


千葉です。

Kenji さん、ありがとうございます。

結果から書きますと、MySQLに下記の文字コード設定をし、データベースを作成しなおすことで解決しました。
やはり、latin1 になっていたのがまずかったようです。

y-chiba.pb% sudo vi /etc/my.cnf
-----------------------------------------------
[mysqld]
default-character-set=utf8
skip-character-set-client-handshake
-----------------------------------------------


設定前に、書いて頂いたプログラムを実行したところ、

character_set_client: utf8
character_set_connection: utf8
character_set_database: latin1
character_set_results: utf8
character_set_server: latin1
character_set_system: utf8
character_sets_dir: /usr/local/mysql-
standard-4.1.22-apple-darwin7.9.0-powerpc/share/mysql/charsets/

という表示でしたが、設定後は、

character_set_client: utf8
character_set_connection: utf8
character_set_database: utf8
character_set_results: utf8
character_set_server: utf8
character_set_system: utf8
character_sets_dir: /usr/local/mysql-
standard-4.1.22-apple-darwin7.9.0-powerpc/share/mysql/charsets/

すべてutf8になりました!


>1.5.4 でなにもせず正常だったということですので、上記のコードを
>コメントにすれば、動くんじゃないかとは思いますが、そもそもの状態の
>文字コード設定がまずい気がします。

教えていただいた部分をコメントアウトしただけでは、文字化けはなおりませんでした。


>
http://pbx.homeunix.org/p_blog/forum/topic.php?tid=320&p=&pn=&pm=35&qid=2007<http://pbx.homeunix.org/p_blog/forum/topic.php?tid=320&p=&pn=&pm=35&qid=2007>
> に少々かかれていますが、Latin1 <-> Latin1 で、文字化けが"見かけ上"
> 発生していない状態なのではないかと、思います。

頂いたURLも参考にネットで調べたところ、下記のページに、ずばりの解決策が載っていました。
http://wota.jp/ac/?date=20061011

見かけ上文字化けが発生していない状態だったということだったのですね。
勉強になりました。

Kenjiさん、どうもありがとうございました。




08/02/03 に Kenji <kenji****@club*****> さんは書きました:
>
> Kenji です。
>
>
> スレッドを切りました。
>
> On Sun, 3 Feb 2008 13:10:23 +0900
> "千葉豊" <yutak****@gmail*****> wrote:
>
> > こんにちは。千葉です。
> >
> > kenjiさん、回答ありがとうございます。
> >
> > >1.5.4 のときは、文字コードに関しては、何もしていじってなかったのでしょうか?
> > >1.5.4 以前は、通常ですと、set names などを発行するように CI 自体に手を加えている
> > >ケースが多いと思いますが。
> >
> > 1.5.4の際は文字コードについては何もいじっていません。
> > ちなみに、1.6.0になって文字化けたので、ネットで見つけた情報を参考にDB_Driver.phpで、SET NAMES UTF8
> > を実行するように手を加えてみたのですが変化はありませんでした。
>
> 「ネットで見つけた情報」自体がもっと汎用的に修正されて CI 1.6.0 に取り込まれている
> という状態です。
>
>
> > >また、実際に使用されている文字コードは何でしょうか?
> > PHPの文字コードはUTF8を使用しています。
> > mysql には特に文字コードの設定はしていません。
>
> 以下のコードで、現状が正確に把握できるのではないかと思います。
> たぶん、最初に示されたものと同じく Latin1 かなと思いますが。
>
> <?php
> class Mysql_character extends Controller {
>
>         function index()
>         {
>                 $this->load->database();
>
>                 $query = $this->db->query("SHOW VARIABLES LIKE
> 'character%'");
>
>                 foreach ($query->result() as $row)
>                 {
>                         echo $row->Variable_name;
>                         echo ': ';
>                         echo $row->Value;
>                         echo '<br />';
>                 }
>         }
> }
> ?>
>
>
> > >これは、どういうエラーになるのでしょうか?
> > >正確なエラーメッセージは何でしょうか?
> >
> > Unable to set client connection character set: ujis
> > Unable to set client connection character set: latin1
> >
> > というエラーが出ています。
>
> database/DB_driver.php の 198行目以降の以下のところですね。
> 不思議ですね。どうしてエラーが出るのだろう?
>
> この部分は、
>
> SET NAMES utf8 COLLATE utf8_general_ci;
>
> のようなクエリを発行しているだけなんですが。
>
>                         if (! $this->db_set_charset($this->char_set,
> $this->dbcollat))
>                         {
>                                 log_message('error', 'Unable to set
> database connection charset: '.$this->char_set);
>
>                                 if ($this->db_debug)
>                                 {
>                                         $this->display_error('db_unable_to_set_charset',
> $this->char_set);
>                                 }
>
>                                 return FALSE;
>                         }
>
>
> > ひとまず、1.5.4に戻して使っています。
>
> 1.5.4 でなにもせず正常だったということですので、上記のコードを
> コメントにすれば、動くんじゃないかとは思いますが、そもそもの状態の
> 文字コード設定がまずい気がします。
>
>
> http://pbx.homeunix.org/p_blog/forum/topic.php?tid=320&p=&pn=&pm=35&qid=2007
> に少々かかれていますが、Latin1 <-> Latin1 で、文字化けが"見かけ上"
> 発生していない状態なのではないかと、思います。
>
>
> > 08/02/03 に Kenji <kenji****@club*****> さんは書きました:
> > >
> > > Kenji です。
> > >
> > >
> > > こんにちは。
> > >
> > > On Sun, 3 Feb 2008 03:18:15 +0900
> > > "千葉豊" <yutak****@gmail*****> wrote:
> > >
> > > > はじめまして
> > > >
> > > > 千葉といいます。よろしくお願いします。
> > > > 最近CodeIgniterを使い始めました。
> > > >
> > > > CodeIgniterを1.5.4 から 1.6.0にアップグレードしたところ、MySQLとのデータの受け渡しで
> > > > 文字化けするようになってしまい困っています。1.5.4では文字化けはありませんでした。
> > >
> > > 1.5.4 のときは、文字コードに関しては、何もしていじってなかったのでしょうか?
> > >
> > > 1.5.4 以前は、通常ですと、set names などを発行するように CI 自体に手を加えている
> > > ケースが多いと思いますが。
> > >
> > > また、実際に使用されている文字コードは何でしょうか?
> > >
> > >
> > > > MySQLのバージョンは4.1.22です。
> > > > 文字コード周りの設定はデフォルトのまま使用しています。
> > > > Server version:        4.1.22-standard
> > > > Protocol version:    10
> > > > Connection:        Localhost via UNIX socket
> > > > Server characterset:    latin1
> > > > Db     characterset:    latin1
> > > > Client characterset:    latin1
> > > > Conn.  characterset:    latin1
> > > > UNIX socket:        /tmp/mysql.sock
> > >
> > >
> > > > PHP5を使用しています。
> > > > PHP 5.2.4 (cli) (built: Sep 23 2007 22:34:35)
> > > > Copyright (c) 1997-2007 The PHP Group
> > > > Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
> > >
> > >
> > > > config/database.php に文字コード関連の設定項目が増えていたので、
> > > > この値をあれこれいじってみたのですが、デフォルトで設定されている、
> > > > 'utf8', 'utf8_general_ci' 以外の値(ujisとかlatin1とか)を設定してもエラーとなってしまいます。
> > >
> > > これは、どういうエラーになるのでしょうか?
> > > 正確なエラーメッセージは何でしょうか?
> > >
> > >
> > > // Kenji
> > >
> > > _______________________________________________
> > > Codeigniter-users mailing list
> > > Codei****@lists*****
> > > http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
> > >
> >
>
> _______________________________________________
> Codeigniter-users mailing list
> Codei****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
Download 


Codeigniter-users メーリングリストの案内
Zurück zum Archiv-Index