質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

1回答

2138閲覧

php 文字化けする

earnest_gay

総合スコア615

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2016/08/19 15:00

cakePHP導入して色々やっている最中です。

初めてということでMVCの動き確認するためにブラウザ確認してるのですが文字化けが発生してしまいます。

DB名:test
TABLE名:categories,comments,topics

ターミナルからbakeコマンド実行。

cake bake all Category;
cake bake all Topic;
cake bake all comment;

sql

1SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; 2 3CREATE TABLE `categories` ( 4 `id` int(11) NOT NULL AUTO_INCREMENT, 5 `name` tinytext COLLATE utf8_unicode_ci NOT NULL, 6 `created` datetime NOT NULL, 7 `modified` datetime NOT NULL, 8 PRIMARY KEY (`id`) 9) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 10 11INSERT INTO `categories` 12(`id`, `name`, `created`, `modified`) VALUES 13(1, 'コンピューター', '2012-02-02 05:14:16', '2012-02-02 05:14:16'), 14(2, '生活', '2012-02-02 05:14:23', '2012-02-02 05:14:23'), 15(3, 'グルメ', '2012-02-02 05:14:30', '2012-02-02 05:14:30'); 16 17CREATE TABLE `comments` ( 18 `id` int(11) NOT NULL AUTO_INCREMENT, 19 `topic_id` int(11) NOT NULL, 20 `title` tinytext COLLATE utf8_unicode_ci NOT NULL, 21 `comment` text COLLATE utf8_unicode_ci NOT NULL, 22 `created` datetime NOT NULL, 23 `modified` datetime NOT NULL, 24 PRIMARY KEY (`id`) 25) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 26 27INSERT INTO `comments` 28(`id`, `topic_id`, `title`, `comment`, `created`, `modified`) 29VALUES 30(1, 1, 'Mac', 31'プログラミングにはやはりMacではないでしょうか。', 32'2012-02-02 05:16:24', '2012-02-02 05:16:24'), 33(2, 1, 'Linuxなら', 34'Windowsのマシンで気に入ったものにLinuxを入れるのが最適。', 35'2012-02-02 05:17:06', '2012-02-02 05:17:06'), 36(3, 1, '好みのものを買えば。', 37'何でも大丈夫だと思いますよ。', 38'2012-02-02 05:17:26', '2012-02-02 05:17:26'), 39(4, 1, 'ありがとうございました', 40'みなさん、ありがとうございます。\r\n参考になりました!', 41'2012-02-02 05:17:45', '2012-02-02 05:17:45'), 42(5, 2, 'えびですね。', 'エビ。', 43'2012-02-02 05:18:37', '2012-02-02 05:18:46'), 44(7, 1, '結局', '何を買うことにしたんですか?', 45'2012-02-02 05:25:20', '2012-02-02 05:25:20'); 46 47CREATE TABLE `topics` ( 48 `id` int(11) NOT NULL AUTO_INCREMENT, 49 `title` tinytext COLLATE utf8_unicode_ci NOT NULL, 50 `body` text COLLATE utf8_unicode_ci NOT NULL, 51 `category_id` int(11) NOT NULL, 52 `created` datetime NOT NULL, 53 `modified` datetime NOT NULL, 54 PRIMARY KEY (`id`) 55) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 56 57INSERT INTO `topics` 58(`id`, `title`, `body`, `category_id`, `created`, `modified`) 59VALUES 60(1, '新しいパソコン', 61'快適にプログラミングをする新しいパソコンが欲しいです。\r\n 62おすすめは何ですか?', 631, '2012-02-02 05:15:13', '2012-02-02 05:28:22'), 64(2, '好きなお寿司は?', 65'みなさんはどんなお寿司のネタが好きですか?', 663, '2012-02-02 05:18:18', '2012-02-02 05:27:51'); 67

結果↓

イメージ説明

id1~3は文字化けしているので
bakeによって生成されたこのブラウザ上からDBへ試しに
コンピュータ
を登録してみました。

ブラウザでは文字化けはないのですが、DB側ではアラビア語みたいな感じになっています。

イメージ説明

どうすればよいでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

文字化けは下記いずれかの文字コードに不一致がある場合に発生します。

  • HTML側で宣言した文字コードとHTMLファイル保存時の文字コード
  • ブラウザ側のエンコード(HTMLで文字コード明示しているのであればブラウザが適切に解釈するのであまり気にしなくてもよい)
  • PHP側の文字コード
  • データベース側の文字コード

こちらのサイトがよくまとまっているので、
上記サイトを参考に文字コードの統一を行うと文字化けは発生しなくなると思われます。

投稿2016/08/19 15:30

Panzer_vor

総合スコア1636

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

earnest_gay

2016/08/19 15:32

ありがとうございます。 DB側はutf8_unicode_ciなので多分、クライアントサイドでのエンコードが違うと思うんですが、bakeではどうやって設定するのかが... もう少し調べてみます。
Panzer_vor

2016/08/19 15:43

下記URLの「データベース設定ファイルを作成」項で、 データベースのエンコーディングの設定漏れ(encoding = utf8設定漏れ)はないでしょうか? → http://hijiriworld.com/web/cakephp-bake/ それがなければdatabase.phpも文字コード設定がおかしい線は消えそうですね。
earnest_gay

2016/08/19 15:43

databese.phpに'encoding' => 'utf8',を追加したらできました!
Panzer_vor

2016/08/19 15:45

> rentoさん 問題解決して何よりです^^ PHPとMySQLでは文字コード絡みで最初ははまりやすいので、 文字コードを確認する習慣をつけるとよいかと思います。
earnest_gay

2016/08/19 15:52

>KotoriMaturi ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問