メイン 日本語化(Japanese Translation)
文字化けが起こらない設定は?? | 投稿するにはまず登録を |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | スレッド |
|---|---|
| krt | 投稿日時: 2006-7-30 10:00 |
Baker スタート ![]() ![]() 登録日: 2006-7-29 居住地: 投稿: 10 |
文字化けが起こらない設定は?? krtと申します。
windows XP xampp1.5.3a # MySQL 5.0.21 # PHP 5.1.4 # phpMyAdmin 2.8.1 cakephp 1.1.6.3264 以上の組み合わせで、モデルを二つ準備し、bakeしました。 movie (HasMany で commentを指定) comment (BelongsTo で movieを指定) movies/addから、 movieに1レコード日本語で登録し、 related commentとしてcommentを1レコード登録しました。 その状態でcomment/view/id でそのコメントを表示させると、 movie だけ日本語が文字化けします。 また、phpMyAdminで確認すると こちらでも日本語は文字化けします。 初心者の質問で恐縮です(問題の切り分けが出来ていません)が ・mysqlの設定 ・cakeの設定 ・phpmyadminの設定 それぞれ皆様どのように行われているのでしょうか・・・? ご教示いただければ幸いです。 |
| shun | 投稿日時: 2006-7-30 10:51 |
Cake 職人 ![]() ![]() 登録日: 2006-7-14 居住地: 東京、日本 投稿: 1007 |
Re: 文字化けが起こらない設定は?? うまくいくようになるまでは試行錯誤と努力が求められますね〜。がんばってください。
ところで、テーブルの文字コードの設定はどうなっているでしょうか? MYSQL 5 であれば、テーブルごとに文字コードを設定できると思うのですが、phpmyadmin などで確認できますか? |
| shun | 投稿日時: 2006-7-30 22:17 |
Cake 職人 ![]() ![]() 登録日: 2006-7-14 居住地: 東京、日本 投稿: 1007 |
Re: 文字化けが起こらない設定は?? 基本として、Windows 上の MYSQL 4.1 以降は、
mysql_connect のあとに、 "SET NAMES 文字コード"を実行する必要がありますが、これは大丈夫ということでしょうか?(そうしないとすべて文字化けしますよね。) |
| krt | 投稿日時: 2006-7-31 0:30 |
Baker スタート ![]() ![]() 登録日: 2006-7-29 居住地: 投稿: 10 |
Re: 文字化けが起こらない設定は?? krtです。
shun様、返信ありがとうございます。 問題を切り分けます。 # 今後cakeのthtmlファイルはUTF8で書くものとして決め打ち ●mysql側の設定 my.cnfにて [mysqld] character-set-server = utf8 collation-server = utf8_unicode_ci init-connect = 'SET NAMES utf8' skip-character-set-client-handshake [mysqldump] default-character-set = utf8 [mysql] default-character-set = utf8 を設定。 skip-character-set-client-handshakeが効いているのか 疑問ですが、それ以外は設定できているようなので、 Server側、Client側ともにutf8で、 かつ接続時に「SET NAMES utf8」を毎回送っている状態になります。 ●PHPMyAdmin側の設定の問題 各テーブルの該当フィールドの照合順序を「utf8-unicode-ci」 とすることで、PHPMyAdmin側の日本語の文字化けを解消 ●CakePHPでの文字化け 別のところであった、$html->link関数のバグでした・・・ htmlentitiesで文字化け したがって該当ファイル「cake/libs/view/helpers/html.php」 のhtmlentitiesをhtmlspecialcharsにしたところ、とりあえず 無事に動作しました。 とりあえず問題を3つに切り分けて設定/修正を行ったところ、 当面の日本語での文字化けは解消されたようです。 shun様、ありがとうございました。 とりいそぎご報告まで |
| Sunvisor | 投稿日時: 2007-11-22 12:46 |
Baker スタート ![]() ![]() 登録日: 2007-11-12 居住地: 投稿: 4 |
Re: 文字化けが起こらない設定は?? 元スレから1年以上も経過してレスをつけるのも??なのですが,このスレッドの参照数がとても多いので,文字化けで悩んでいる人が多いのかなと思い,書かせていただきます。
実は僕も化けられて困ったクチです。でもわりと解決方法は単純なようです。 1. thtmlの文字コードを統一する 2. layoutでページのエンコードを指定する 3. database.phpでencodingオプションを指定する です。詳しくは以下の記事を参照してください(拙宅です) http://php.sunvisor.net/2007/11/cakephp_2.html 間違いなどあればツッコミもお願いします。 |
| shaku | 投稿日時: 2007-11-23 20:03 |
Baker スタート ![]() ![]() 登録日: 2007-11-23 居住地: 東京都 投稿: 1 |
CakePHPガイドブックは説明不足 sunvisorさん、はじめまして。フォローさせていただきます。結果としてsunvisorさんと同じ設定ですが、私はガイドブックからはじめました。EUC_JPも指定できるような記述があり、かえって混乱の元になっていると思います。Webアプリでは標準である、UTF-8に徹底すべきです。
p49の、EUC_JPはUTF-8とします。 p50の、SET NAMESは不要。 p52の、ujisはutf8とします。(utf-8ではない) MySQL5.0.45ではutf8_unicode_ciを設定する。 phpMyAdminは2.11.1.5850 いずれも最新のXAMPPをダウンロードしました。設定が楽です。 CakePHPは1.1.18です。 なおテキストエディタはUTF-8に対応するteraPadを使っています。 |
| Sunvisor | 投稿日時: 2007-11-26 9:40 |
Baker スタート ![]() ![]() 登録日: 2007-11-12 居住地: 投稿: 4 |
Re: CakePHPガイドブックは説明不足 shakuさんresありがとうございます。
僕の環境ではUTF-8を使用していますが,ブログの記事でも書いてあります通り,EUC-JPでの設定が使えないワケじゃないと思いますがいかがでしょう。 僕の感じでは,MySQLの内部エンコードによらず,PHP側での文字コードが一つに統一されていることが重要だと思うのですが。 PHPガイドブックの記述に関しては,EUC-JPで統一するというのであれば,これでいいと思います。utf-8を利用する場合は,shakuさんのご指摘の通りに変更すれば良いでしょうね。 P50の「すべてのページにSET NAMESを」というのを読んでいると,以前のバージョンのCakePHPではencoding指定を行えなかったんですね。知りませんでした。 |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
| 投稿するにはまず登録を | |



