
ひらがな、カタカナは読み込めるのですが、漢字で下記のエラーが出ます。
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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エンコーディングについて
-
データベースから取り出した日...
-
PHPのif文でその処理を途中で抜...
-
FTPコマンドでディレクトリごと...
-
CFileDialogの最初のディレクト...
-
VBSの「MsgBox」について
-
zip圧縮の種類について
-
レンタルサーバーのセッション...
-
PHPSpreadsheetによる書き出し...
-
Subversionのリポジトリの削除
-
inputタグでphpを呼び出す際、...
-
form actionで二つ送信先を指定...
-
makefile でファイルをコピーす...
-
文字列を段落で分ける方法を教...
-
HPの更新をしたら自動でメール...
-
PHPで、エラーがない場合のみ画...
-
Illustratorで文字と画像を流し...
-
URLの変わらないページをPHPで...
-
VBAからPHPを実行(キック)したい
-
PHPでOut of memoryのエラー解...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エンコーディングについて
-
データベースから取り出した日...
-
PHPの文字化けした文字だけ削除...
-
PHPExcelで日本語(漢字)ファ...
-
Content-Typeが機能していない?
-
$str=preg_replace('/\\u3000/'...
-
scandir関数取得結果の文字化け
-
PHPでCSV出力時の文字化け(一部)
-
XML出力時の日本語一部文字化け
-
SQLiteManagerが文字化け
-
mysql utf8、php・euc-jp で出...
-
phpのhex2binについてphpで、ut...
-
php5,MySQL5で文字化けが起こる
-
ハシゴの「高」が「?」に置き...
-
SJIS文字をtrimすると文字化け
-
【PHP】ファイル読み込みで...
-
i18n_convert と mb_convert_e...
-
SJISのダメ字について
-
MYSQLから抽出したクエリの結果...
-
phpで文字化け(php.ini)
おすすめ情報