.ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録

.検索

.メインメニュー

.フォーラムメニュー

.オンライン状況
13 人のユーザが現在オンラインです。 (13 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 13

もっと...

.
.リンク集

メイン
   日本語化(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指定を行えなかったんですね。知りませんでした。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 


. .