さくらサーバーを使用している者です。

下記①~⑤の通り、文字コードをセットしましたが、ブラウザの文字が、日本語の部分だけ"?"で表示されてしまいます。(アルファベットはそのまま表示されます。)
Googleで見つけた解決方法はすべてやったつもりですが、何か勘違いしているようなので、誤りがあれは教えてください。よろしくお願いします!!
①テキストエディタのエンコード:UTF-8
②phpMyAdminのMySQL 接続の照合順序:utf8_general_ci
③HTMLの文字セット:<head><meta charset="utf8"></head>
④クライアントのデフォルト文字セット:
$link = mysqli_connect($host, $username, $password, $dbname);
$conn = mysqli_select_db($link,$dbname);
mysqli_set_charset('utf-8');
⑤dbデータ出力
while($data = mysqli_fetch_array($result)) {
echo mb_convert_encoding($data["text"], "utf8", "euc-jp");
echo $data["menu_name"];
}

回答の条件
  • 1人1回まで
  • 13歳以上
  • 登録:2015/04/19 19:47:22
  • 終了:2015/04/26 19:50:04

回答(4件)

id:degucho No.1

degucho回答回数251ベストアンサー獲得回数662015/04/19 20:11:19

ポイント25pt

データ自体がどのエンコーディングで格納されているか確認してください
http://www.dbonline.jp/mysql/myini/index3.html
・DB格納エンコーディング
・DBから取り出すときのエンコーディング
・ブラウザに送信するエンコーディング
・ブラウザへのエンコーデイング指定
辻褄があってないと文字化けします

id:m0r1y055tan

deguchoさん、早速ありがとうございます!DBを作成した際、文字コードをutf8に設定しました。ブラウザもutf-8のエンコーディングに指定済です。DBから取り出す時のエンコーディングとは⑤、ブラウザへ送信するエンコーディングは③の通り、utf-8です。すべてutf-8にしたつもりなのに文字化けするため、クライアントやsql実行の文字セットを設定しました。

2015/04/19 23:35:45
id:degucho

mysqli_set_charset('utf-8');
これはハイフン不要でuft8です

echo mb_convert_encoding($data["text"], "utf8", "euc-jp");
これはテストでしょうか?euc-jpが指定されていますが

2015/04/19 23:39:53
id:syamaoka No.2

syamaoka回答回数19ベストアンサー獲得回数82015/04/19 21:39:37

ポイント25pt
echo mb_convert_encoding($data["text"], "utf8", "euc-jp");

質問文にある、この行が気になります。データベースに登録されているデータは EUC-JP なのでしょうか?特に理由がなければ UTF-8 で統一するのが最近ではベストプラクティスになっています。
もしデータが EUC-JP であるのであれば、設定をすべて EUC-JP に統一するのも手ではありますが、私なら、データベースに登録する前に mb_convert_encoding で UTF-8 に変換しておき、データベースには UTF-8 で格納するポリシーを採用します。

id:m0r1y055tan

syamaokaさん、アドバイスありがとうございます!さくらサーバーのデータベースの文字セットがEUC-JP固定と書いてあるサイトを見つけたので、このように記述しましたが、現在コマンドを使用できない環境のため確認できてません。さきほどecho mb_convert_encoding($data["text"], "utf8", "auto");としましたが、結果はやはり文字化けました。データベースに登録する前にmb_convert_encodingを使用するのはやっていなかったので、後でやってみて結果をご報告します。(^ - ^)

2015/04/20 00:08:40
id:fatena No.3

suinger回答回数126ベストアンサー獲得回数262015/04/19 22:40:17

ポイント25pt

以下1行をコメントアウトか削除してみてください。おそらく不要です。
echo mb_convert_encoding($data["text"], "utf8", "euc-jp");

データベース上のデータもUTF-8の設定のようですが、上記1行はデータベース上のデータをeuc-jpとみなして、変換をかけてしまっています。

id:m0r1y055tan

返信ありがとうございます!
コメントアウトしても同じでした。状況変わってきたので、後ほど質問に補足するか、新たに質問し直します。<(_"_)>

2015/04/22 08:25:48
id:blue_star22 No.4

blue_star22回答回数297ベストアンサー獲得回数122015/04/21 19:35:08

ポイント25pt

mysqlは外国で頒布された形のままではだめで、日本語を使う場合は、バイナリのオプションでコンパイルしないとだめだったと思います。

id:m0r1y055tan

回答していただいた皆様、ありがとうございます!私の方でその後、ターミナルで文字セットを調べたら、ujis(epc-jp)に全て変更した方が効率的だと判断しました。が、( ̄ー ̄)まだ文字化けするため、整理してまた新たな質問を立てようと思います。ここにご回答いただいた皆様、ありがとうございました!今後ともどうぞよろしくお願い致します。<(_"_)>

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません