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

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

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

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

Q&A

解決済

3回答

12661閲覧

PHPExcelで日本語が」全て文字化けになってしまいます。

oneplan

総合スコア7

PHP

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

0グッド

0クリップ

投稿2016/12/15 04:22

PHPExcelで日本語が全て????と文字化けしてしまってます。

利用環境
php 5.6.21
phpファイルの エンコード UTF-8
Mysql サーバーの文字セット UTF-8 Unicode

ネットで調べましたら、
そのままutf8で大丈夫とか、
mb_convert_encodingで sjis-winに変換してとか、
有りましたが、sjis-win とか SJIS とか UTF-8とかエンコードしたものを
代入してもおなじでした。

よくわからないのが、
$sheet->setCellValue('D5', '電話:'.$row['tel_number']);
とすれば、「電話:」の文字は正常に表示されるのに、

$sheet->setCellValue('D4', $row['name']);
($row['name']は日本語)ではなるのかということ。

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

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

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

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

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

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

guest

回答3

0

自己解決

すみません、自己解決しました。

$mysqli->set_charset("utf8");//日本語対策

これを入れてなかったです。
これをsql発行前に入れておけば、エンコード不要で正常に表示できました。
ありがとうございました。

投稿2016/12/15 05:01

oneplan

総合スコア7

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

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

0

PHP のソースコードに書かれたリテラルの日本語は正常に出力されるが、変数に代入したものを出力すると文字化けする、ということは、

  • PHP のソースコードは UTF-8 である
  • 内部での処理が UTF-8 になっていない

のでは。
mb_internal_encoding('UTF-8')は、どこかで行っていますか?

投稿2016/12/15 04:54

tacsheaven

総合スコア13703

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

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

0

$row['name']

がUTF8のデータだからでしょうね
投入時にmb_convert_encoding()してもいいですが、$rowで抜き出しているであれば

PHP

1mb_convert_variables('SJIS-win', 'UTF-8', $row); 2

としてから$row['name'] を参照してください

投稿2016/12/15 04:32

yambejp

総合スコア114777

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

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

oneplan

2016/12/15 04:46

mb_convert_variables('SJIS-win', 'UTF-8', $row); を代入前に入れてみましたが、結果はやはり、????と文字化けのままです。 困りました。
yambejp

2016/12/15 04:54

はて? そうなると何を何にコンバートするときにうまくいかないかわからないですね iconvなどの問題でしょうか たとえば $sheet->setCellValue('D4', urlencode($row['name'])); でテストしてみると、どのキャラクターコードでエンコードされているか 推測しやすいかもしれません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問