質問

2011年07月01日 01時48分
  • MySQL、PHP、ACCESSでの文字コードについて

情シスのオープンナレッジ『Syszo』サービス終了のお知らせ

質問

別部署で作成しているシステム?について
ちょっと相談を受けています。

別ソースからの入力データ(csvなど)を
ACCESSで取りこみODBC接続でMySQLへ流し込み、
その後にWeb画面(PHP)で編集をしようとしています。

テキストデータ→ACCESS→ODBC→MySQL⇔Web(PHP)

ACCESSからMySQLへ入れた時に(株)などの機種依存が化けたので
CP932を指定して回避したら、Webで?になる文字が出たなど
四苦八苦しているようです。

全ての文字コードを合わせてあげれば解決しそうだと思うのですが、
このような場合に使用する文字コードについて
セオリーなど有りますでしょうか。

また、その他注意点など有りますでしょうか。
宜しくお願い致します。

2件の回答があります

回答

Access内での特殊文字の文字化け問題は
私も個人的に1週間ほど悩みましたが、結論から言えば
解決できませんでした。
なので、特殊文字がでてきた場合は
on error resume next
ではじいてエラーリストを作成してデバッグ
(入力側のつぶし作業)
をしました。

回答

お疲れ様です。

文字コードの問題はなかなかやっかいですよね。
特にMSOFFICE製品は、SJIS(WINDOWS31J)ベースが前提であるケースが多いので・・・。

まずは、MySQLのDBの文字コードは何を使われていますか?
また、PHPでの文字コードは何を使われていますか?

この辺が、EUCだったりすると結構面倒くさいような気がします。

特に機種依存文字に関しては、ODBCドライバーの部分でカバーされていないと思います。

Access側でその辺の変換ロジックを作った上で、MySQLになげてあげるのがいいのかもしれませんね。

弊社では、MySQLもありますが主にPostgreSQLとOracleを利用しています。
Oracleは文字コードも周りにかなり幅がありあまり困ったことはないですね。
PostgreSQLの場合は、ODBCドライバー周りは・・・ですが、JDBC等ではあまり困ったことはないですね。

最近はWEBシステム化していることを背景に、UTF-8でDBもシステムも文字コードをあわせて構築している事が多いです。

Accessからの場合ですとやはりトラブルを避けるためにもSJIS(WINDOWS31J)ベースにすることが望ましいのではないかと思います。

ご参考まで...。

2011年07月01日 13時38分

あなたもコメントしましょう!