ひらがな、カタカナは読み込めるのですが、漢字で下記のエラーが出ます。
mb_convert_encodingでいろいろ変換してみましたがダメです。
教えてください!
Fatal error: Uncaught exception 'Exception' with message 'Could not open 予?xls for reading! File does not exist, or it is not readable.' in C:\xampp\htdocs\Partner_Management\PHPExcel\Shared\OLERead.php:76 Stack trace: #0 C:\xampp\htdocs\Partner_Management\PHPExcel\Reader\Excel5.php(928): PHPExcel_Shared_OLERead->read('??????xls') #1 C:\xampp\htdocs\Partner_Management\PHPExcel\Reader\Excel5.php(498): PHPExcel_Reader_Excel5->_loadOLE('??????xls') #2 C:\xampp\htdocs\Partner_Management\EstimateCost.php(54): PHPExcel_Reader_Excel5->load('??????xls') #3 {main} thrown in C:\xampp\htdocs\Partner_Management\PHPExcel\Shared\OLERead.php on line 76
ファイル名:予定.xls
OS:WindowsXP
Excel:Excel5
XAMPP:1.7.3
[php.ini]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = SJIS
mbstring.encoding_translation = Off
mbstring.detect_order = SJIS,EUC-JP,JIS,UTF-8,ASCII
mbstring.substitute_character = none;
mbstring.script_encoding= Shift_JIS
[phpファイルの文字コード]
UTF-8
No.3ベストアンサー
- 回答日時:
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = SJIS
mbstring.encoding_translation = Off
mbstring.detect_order = SJIS,EUC-JP,JIS,UTF-8,ASCII
mbstring.substitute_character = none;
mbstring.script_encoding= Shift_JIS
すみません、これらをよくみると、
mbstring.http_output = SJIS
ってなっているということは、画面が遷移して、ページがレンダリングされるたびに、
すべての出力がSJISになります。
にもかかわらず、
mbstring.http_input = pass
となっているので、POSTされて受け取った値はすべてSJISで渡されてきてしまうと思います。
これは、両方共「pass」にしたほうが良いです。
また、mbstring.script_encodingにかんしても、ドキュメントがなかったりして何をやっているかよくわからないので
出来ればコメントアウトしてしまうのが無難かなと。
※私の場合は、mbstring関連の項目はすべてデフォルトのままです(つまり全部コメントアウト)。
基本的に自分の書いているスクリプトで各エンコーディングを行ったほうが、別の環境で実行した場合でも問題が起こりづらい。
それらを設定した上、一度XAMPPを再起動させてみて、現象が発生するか確認されたほうが良いと思います。
HTMLがSJISで記述されているなら、echoする出力全てに、mb_convert_encodingしないといけないですが。
まぁ、逆に言えば今の設定のままでも、読み込むファイル名がPOSTされた値なのであれば、mb_convert_encodingをしなければ読めそうな気がします。
php.iniのmbstring関連の項目をすべてコメントアウトしました。
これでもダメだったのですが、OLERead.phpのread()メソッドのis_readableをコメントアウトすると、読み込めるようになりました。
is_readableのコメントアウトだけでは読み込めなかったのでとりあえず解決はしました。
ありがとうございました。
No.2
- 回答日時:
mb_convert_encoding($filename, 'SJIS','CP932');
ここの記述ですが、「CP932」って、SJISのことですよ。
phpファイルをUTF-8で記述しているなら、
mb_convert_encoding($filename, 'SJIS-win', 'UTF-8');
ではないですか。
この回答への補足
mb_convert_encoding($filename, 'SJIS-win', 'UTF-8');
は試してみました。
が、これだと平仮名、カナカナのファイルすら読み込めなくなってしまいます。
mb_convert_encoding($filename, 'SJIS','CP932');
ですと、平仮名、カタカナを読み込めるようになります。
一体何なのでしょうか。。
もしかしてWindowsXP(Excel97-2003)だと読み込めないのでは?
という気がしているのですが。
家のWindows7(Excel2007のExcel97-2003)では漢字ファイルを読み込めます。
No.1
- 回答日時:
これの場合「予定」以外のファイルはどうでしょうか?
有名な話shiftjisの「予」は975Cのため5C問題にひっかかります。
回答ありがとうございます。
5C問題は知りませんでした。
ただ、「予」を避けても変わりませんでした。
ソースコードはこちらです。
--------------------------------------------
set_include_path(get_include_path() . PATH_SEPARATOR . './PHPExcel/Classes/');
require_once 'PHPExcel.php';
require_once 'PHPExcel/IOFactory.php';
require_once 'MySQL.php';
$objReader = PHPExcel_IOFactory::createReader('Excel5');
$filename = "進行.xls";
$filename = mb_convert_encoding($filename, 'SJIS','CP932');
$objPHPExcel = $objReader->load($filename);
-------------------------------------------------
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- その他(プログラミング・Web制作) Sikulix2.0.5(Jython2.7.3)でcsvを読込WEB検索条件にpasteで文字化け 1 2023/03/31 11:02
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- その他(プログラミング・Web制作) laravel 本番環境でメールが送れません。 1 2023/02/17 17:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
i18n_convert と mb_convert_e...
-
こちらはただの直列処理ですか?
-
onedrive にexcelファイルをア...
-
フォントの色を変えるには?
-
VBでメールを送る時のSMT...
-
ワードプレスサイト PHP8.0.25...
-
FTPコマンドでディレクトリごと...
-
アップロード画像数でCSSを分け...
-
二重投稿防止方法
-
PHPのif文でその処理を途中で抜...
-
入力フォームの空白や改行を制...
-
php5のrename()は日本語をリネ...
-
sqlで日付が一番古いデータの月...
-
HYのAM11:00のラップの部分の歌...
-
php 完了画面の送信メールのコ...
-
htmlのエラーについて(デバッグ)
-
PHPExcel処理速度が遅い
-
phpでPEAR::DBを使っているので...
-
URLが.PHPってどういう...
-
PHP8を使うと、大量のWarningが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エンコーディングについて
-
phpのhex2binについてphpで、ut...
-
ハシゴの「高」が「?」に置き...
-
PHPでCSV出力時の文字化け(一部)
-
$str=preg_replace('/\\u3000/'...
-
PHPの文字化けした文字だけ削除...
-
phpMyAdminで文字化け
-
【PHP】ファイル読み込みで...
-
MySQL文字コード
-
windowsXP、XAMPPでメーラーMer...
-
i18n_convert と mb_convert_e...
-
データベースから取り出した日...
-
scandir関数取得結果の文字化け
-
PHPフォーム→PHP確認画面で...
-
文字化け
-
XML出力時の日本語一部文字化け
-
header("location~")をPOSTで...
-
PHPの文字コード (php.iniの...
-
PHPExcelで日本語(漢字)ファ...
-
mysql utf8、php・euc-jp で出...
おすすめ情報