XAMPP上のPHPプログラムデータで、PDOを使いAccess2003のMDBファイルを読み取り、出力するシステムが、一業務において必要となっています。
PDOを用いたAccessファイルへの接続はうまく行っているのですが、2点どうしても解決できない問題点が発生しています。
※もし、試される場合、php.iniのextension=pdo_odbcのコメントを外して有効にしてください。
PHP
1 $dbh = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; Dbq=$dbName; Uid=''; Pwd='';");
1. 日本語カラムからデータを取得できない。
PHP上にSQLを記述する際に、
PHP
1 $sql = "select * from \"{$table}\" where '"\日本語カラム名\"' = $code;"
取得したいデータで、日本語のカラムが入るテーブルがあるため、現状カラム名を半角英数字に書き換えないとデータがうまく取得できない状態となっています(カラムを英数字に書き換えるとうまく取得できます)。
2. 環境依存文字(ローマ数字)を出力した際に、どうしても文字化けが起きる。
MDBファイル上のデータに、ローマ数字(Ⅰ~Ⅴ)を含んだ値があり、MDBファイル上では文字化けしていないのですが、PDOを使って出力した際に、"?"などに文字化けして正しく表示されません。文字参照を使ってpreg_replaceで置き換えると、ブラウザ上は正しく表示されるのですが、ファイルをダウンロードさせてtxtファイルにて出力した際に、文字参照のまま表示されてしまいます。
やったこと
・元のエンコードを調べるために、var_dump(mb_detect_encoding($hoge))とした → falseとなり、認識できなかった。
・mb_convert_encoding($hoge,"SJIS","auto")から変換先、変換後をあらゆる通りで試した。
以上、2つの点について解決方法をご存知の方、よろしくお願い致します。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/23 06:59
退会済みユーザー
2018/08/23 07:01
2018/08/23 07:46
退会済みユーザー
2018/08/23 08:03
2018/08/23 09:17 編集
退会済みユーザー
2018/08/23 09:21
2018/08/23 09:29
退会済みユーザー
2018/08/23 09:31 編集
2018/08/23 09:43 編集