質問編集履歴

1

タグ追加など

2018/10/25 03:21

投稿

answer
answer

スコア16

test CHANGED
File without changes
test CHANGED
@@ -81,3 +81,89 @@
81
81
 
82
82
 
83
83
  phpMyAdminで実行させたら絵文字が保存できているのでテーブルの設定には問題ないと思うのですがPHPで実行させると文字化けを起こす理由がわからず困っています。
84
+
85
+
86
+
87
+
88
+
89
+ ---
90
+
91
+ 追加
92
+
93
+
94
+
95
+ PHPファイルの文字コードはUTF-8(BOM無し)です。
96
+
97
+
98
+
99
+ ```php
100
+
101
+ <?php
102
+
103
+ try {
104
+
105
+ $options = array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES utf8mb4");
106
+
107
+ $dbh = new PDO('mysql:dbname=sushiya;host=localhost;charset=utf8mb4','root','hogehoge', $options);
108
+
109
+ } catch (PDOException $e) {
110
+
111
+ exit($e->getMessage());
112
+
113
+ }
114
+
115
+
116
+
117
+ $sql = "INSERT INTO sushi(name) VALUES('マグロ????スシ');";
118
+
119
+ $dbh->exec($sql);
120
+
121
+ ?>
122
+
123
+ ```
124
+
125
+ ```php
126
+
127
+ <?php
128
+
129
+ try {
130
+
131
+ $dbh = new PDO('mysql:dbname=sushiya;host=localhost;charset=utf8mb4','root','hogehoge');
132
+
133
+ $dbh->query("set names utf8mb4");
134
+
135
+ } catch (PDOException $e) {
136
+
137
+ exit($e->getMessage());
138
+
139
+ }
140
+
141
+
142
+
143
+ $sql = "INSERT INTO sushi(name) VALUES('マグロ????スシ');";
144
+
145
+ $dbh->exec($sql);
146
+
147
+ ?>
148
+
149
+ ```
150
+
151
+ 上記のように
152
+
153
+ ```php
154
+
155
+ $options = array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES utf8mb4");
156
+
157
+ ```
158
+
159
+ ```php
160
+
161
+ $dbh->query("set names utf8mb4");
162
+
163
+ ```
164
+
165
+ これらを追加したところ正しく絵文字が登録されました。
166
+
167
+
168
+
169
+ ただし根本的な解決になってないので、テスト環境の設定が間違っているのであれば指摘してもらえるとありがたいです。