人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

さくらサーバーを使用している者です。
下記???の通り、文字コードをセットしましたが、ブラウザの文字が、日本語の部分だけ"?"で表示されてしまいます。(アルファベットはそのまま表示されます。)
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"];
}

●質問者: m0r1y055tan
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● degucho
●25ポイント

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


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

deguchoさんのコメント
mysqli_set_charset('utf-8'); これはハイフン不要でuft8です echo mb_convert_encoding($data["text"], "utf8", "euc-jp"); これはテストでしょうか?euc-jpが指定されていますが

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

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


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

3 ● suinger
●25ポイント

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

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


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

4 ● blue_star22
●25ポイント

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


質問者から

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


関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ