mysqlのデータベース文字コードの変換とは?

このQ&Aのポイント
  • mysqlのデータベース文字コードの変換について教えてください。
  • テストサーバーで誤ってUTF-8のデータをEUC-JPのデータベースに投入してしまいました。
  • テストサーバーからデータをエクスポートする前に文字コードを変換することは可能でしょうか?他の解決策はありますか?ご存知の方がいらっしゃいましたら教えてください。
回答を見る
  • ベストアンサー

mysqlのデータベースの文字コードの変換について

mysqlのデータベースの文字コードの変換について教えてください。 テストサーバー環境で誤って文字コードUTF-8のデータベースを作成し、文字コードEUC-JPのデータを投入してしまいました。 それでもテストサーバー環境では文字化けせずにウェブアプリを表示できていましたが、テストサーバーのデータをエクスポートすると、テキストエディタで開いた時点で文字化けしています。 (文字コードはUTF-8、EUC-JPのいずれでも) もちろんそのデータを本番サーバーにインポートしても文字化けしてしまいます。 (データベース文字コードはUTF-8、EUC-JPのいずれでも) テストサーバーからデータをエクスポートする前に文字コードを変換することは可能でしょうか? もしくは他に問題を解決する方法はありますでしょうか? ご存知の方がいらっしゃいましたら教えてください。

  • MySQL
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.1

MySQLだけでは、既に入れてしまったデータの文字コード変換は難しいのでは? phpかperlかで、文字コードを、プログラムで判定して、必要な文字コードへ変換する作業を挟む必要があるでしょう。 大まかな作業手順 1.select * from table_name で全項目全行取得(データが大きいなら、limitで適宜行数分割) 2.各行、各項目データの文字コード判定、変換 3.変換後データを、csvで書き出して、別の新しく作ったtable(本番サーバーなど)へLOAD DATA INFILE

関連するQ&A

  • SQLiteで作ったデータベースの文字コード変換

    PHPとSQLiteを使ってサイトを運用している者です。 これまでECU-JPの文字コードでサイトを作ってきたのですが 諸事情によりUTF-8に変更することになりました。 そこで問題が発生したのですが、 データベースがECU-JPで作られたものなのでUTF-8に変更したサイトで 表示しようとすると文字化けが起こります。 そこでECU-JPで作られたデータベースをUTF-8に変換したいのですが どういった方法があるのでしょうか? ちなみにデータベース制作にはSQLiteManagerを使っています。 SQLiteManagerの文字コード設定はECU-JP → UTF-8に変更済みです。 宜しくお願い致します。

  • mysql→EUC-JP、php→UTF-8の時の文字コード変換箇所について。

    こんにちわ。 現在xreaのサーバーを使っているのですが、私が借りている サーバーはmysqlの文字コードがEUC-JPで固定されており、 WebページはUTF-8で書いている為、データを取り込む時、 上げる時共に文字化けしています。 色々試行錯誤したのですが、エラーが出てしまいうまくいきません。 そこで、このような環境の時はどの部分で、文字コードの変換処理を すればいいのでしょうか? (SQL文で行うべきか、PHP文で行うべきか、それともお互いで処理するべきか。) サーバー環境は以下です。 Apache 1.3.37 PHP 5.1.4 MySQL 4.0.26 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 文字コードの変換

    今、C言語の勉強をしているのですが、 EUC-JPの文字コードのファイルを読み込んでUTF-8の文字コードのファイルに変換したい場合はどうすればいいのでしょうか? それか、ファイルに書き込む時に文字コードをEUCーJPからUTFー8に変換して出力する方法でもいいです。 調べ足りないのかもしれませんが色々調べてもよくわかりませんでした。 よろしくお願いします。

  • PHPの文字コード変換について

    PHPで mb_convert_encodingを用いて UTF-8で記述されたPHPスクリプトファイルの PHPファイル内の任意の文字列の文字コードを変換する場合、 $value = "文字列"; $str = mb_convert_encoding($value ,"UTF8","UTF8"); print $str; この場合、特に問題なく、変換がおこなわれます というか、意味のないで処理ではありますが。 次に $str = mb_convert_encoding($value,"EUC-JP","EUC-JP"); とした場合 うまく文字列の文字コードの変換がおこなわれず 出力内容は文字化けします。 次に $str = mb_convert_encoding($value,"SJIS","SJIS"); とした場合 EUC-JPと同じく文字コード変換に失敗し 文字化けするだろうとおもいましたが おもいのほかブラウザの文字コードUTF-8のままで文字化けしていないのです。 これはどういう現象でしょうか? たとえば一つ目は UTF8で記述されたPHPファイルの文字列をそのままUTF-8として 変換されせるのですから、問題ないはずです。結果問題ありません。 二つ目は UTF-8でかかれたPHPファイルの文字列をEUC-JPでかかれたファイルとして EUC-JPという文字コードに変換しなさいという命令ですよね? これは思う通りにいかなくて文字化けした文字列が出力されるのはわかるのですが 三つ目はUTF8で記述された文字列をSHIFT-JISとしてSHIFT-JISに変換しようとしているにも かかわらず、結果問題なくブラウザのUTF-8で文字列と表示されてしまいます。 これはいったいどういう事なのでしょうか? これが仮に $str = mb_convert_encoding($value,"SJIS","UTF-8"); なら話は簡単んです。 UTF-8で記述されたファイルの任意の文字列を UTF8からSJISに変換しようとしているのですから問題なく SHIFT-JISでエンコーディングされた文字列が帰ってくるはずです。 こ乃原因をご存知のかたよろしくご教授ください。 お願い致します。

    • ベストアンサー
    • PHP
  • 文字コード変換について

    現在、あるWebシステムを開発中なのですが、文字コードについて基本的な質問があります。開発中のシステムでは、データベースはOracleでAL32UTF8(UTF8)を使っています。アプリケーション自体はJavaで開発しています。このWebシステムには以下のように外部システムやファイル経由でデータをロードすることがあります。 (1)ファイル経由でデータをロードする場合 クライアント端末からファイルを読み込ませてそのファイルのデータをデータベースにロードするような動作があります。この際、ファイル自体の文字コードは重要ですか(データベースがUTF8である以上、ファイルがUTF8でないとそのままロードすると文字化けする等の現象がありますか)?基本的にはWindowsクライアントですが、OSのバージョンは多様なので、OSによっては(メモ帳などでデフォルトで保存される文字コードによっては)問題が起こり得るのでしょうか?その場合は、ファイルアップロードの際にUTF8以外の文字コードであるかを自動判別して、UTF8に変換するような必要がありますでしょうか?UNIXではnkfで指定の文字コードに変換できるらしいことは知っていますが、ウェブアプリケーションでそのような自動判別からのUTF8変換など、可能なのでしょうか?コードを教えて頂けると大変助かります。 (2)外部システム経由でデータをロードする場合 メインフレームなど他のシステムから、例えばSOAPなどでインテグレーションする場合にも、文字コードを意識しないとやはり文字化けを招くことになりますか?(文字列が例えばEUCやEBCDICでわたってくる場合は、それをコード変換する必要がありますか?)それはnkfコマンドによるファイル変換のように一発で出来ることなのか、それとも一文字一文字何らかの処理を行うものなのでしょうか?Javaで数行プログラムを書けば済むレベルの話なのか、HULFTなどの高価なツールでないと対応できない話なのか、全く想像がつかないため教えて頂けると大変幸いです。 以上、宜しくお願いします。

    • ベストアンサー
    • Java
  • mysql 文字化けについて教えてください。

    現在Fedoraの自宅サーバで OpenPNEでのソーシャルネットワークと xoopsでのサイトを作っています。 OpenPNEでは文字コードをShift-jisに設定しなくては ならず、設定したところ文字化けはしなくなったのですが、 今度はそれまでEUC-JPで文字化けしていなかったxoopsが 文字化けしてしまいました。 1つのデータベースサーバでデータベースごとに 文字コードをわけることはできるのでしょうか? 設定方法を教えてください。 宣しくお願いします。

    • 締切済み
    • PHP
  • MySQLの文字化け

    WindowsServerでPHPとMySQLで作成したプログラムを動かしています。 PHPからINSERTでMySQLに登録すると環境依存文字(「(株)・(有)など)が「?」になってしまいます。 PHPからSELECTでブラウザ上に表示させると文字化けはしていませんが、phpMyAdminで確認すると「?」になっています。 このデータベースの内容を他のサーバーに移すときに、phpMyAdminからエクスポートまたはmysqldumpすると「?」のままエクスポートして、他のサーバーでインポートしても当然「?」になってしまいます。 環境依存文字が文字化けしない、あるいは他のサーバーでも環境依存文字をそのまま移行できるようにはできないでしょうか。 よろしくお願いします。 PHPはEUC-JP、データベースはujisで作成しています。 INSERTの直前でSET NAMES UJISを実行しています。

    • ベストアンサー
    • MySQL
  • EUC⇔Shift_JISの文字コード変換について

    DB(OS:win2003、DBMS:MySQL Server5.0  文字コードはEUC)に対して CSVファイルをインポート、エクスポートしようとしています。 入出力ファイル(CSVファイル)の文字コードはShift_JISのため、 文字コード変換が必要となってきています。 CSVファイルのインポート/エクスポート、文字コード変換は、 php5.2.5で構築しています。 今、エクスポート(EUC→Shift_JIS)したCSVファイルを、 エクセルで確認すると極一部が文字化けしてしまいます。 そこで質問が4つあります。 1.文字化けは仕方ないことなのでしょうか? 2.文字化けする文字を特定することはできるのでしょうか? 3.エクスポート方法、変換方法によって文字化けする文字は変わってくるので しょうか? 4.みなさんはこのような文字化けの問題をどのように回避した経験お持ちですか?   (文字化けは已む無し、文字コードを意地でも統一した、    文字を特定して特殊文字に置き換えたなどなど) 基本的なことと思いますが、よろしくご教授願います。  (3.4.はもっと詳細がわからないと何とも言えないかもしれません。   ご回答頂く為には何を調べればいいのかからも教えてください。   よろしくお願いします。)

    • ベストアンサー
    • MySQL
  • mysqlの文字化けについて

    さくらサーバーのプレミアムプランで、MYSQLが文字化けを起こして困っています。 MYSQL5.1、データベースの文字コードはUTF8です。 UTF8でエンコードされたPHPプログラムからデータをINSERTすると文字化けを起こします。 ハッスルサーバーで同じ環境を再現すると、文字化けは起こしません。 違いは、ハッスルサーバーでは、「character_set_server utf8」になっているのに対して、 さくらサーバーでは、「character_set_server ujis 」となっています。 この、ujisをutf8に変更すれば解決しそうに思うのですが、変更の仕方がわかりません。 アドバイス頂けましたら、幸いです。

  • データベースと文字コードの関係

    お恥ずかしい話ですが、文字コードのことが良くわかっておりませんので、utf-8を使ったデータベースをWindowsから取り扱う方法を教えて下さい。 Excelマクロからフリーのデータベースを使って簡単なアプリケーションを作成しようと思っています。 軽くて設定も簡単なSQLiteを使いたいのですが、文字コードがutf-8になっているとのことで、Windows上でCSVファイルをutf-8で保存してから、SQLiteのデータベースにインポートしてみました。 Windwosサーバー上にあるSQLiteに対して、コマンドラインでSELECT命令を発行したり、Excelのデータベースクエリーを実行したりしてみましたが、当然というべきか文字化けしてしまいます。 Excelのシート上で入力したS-JISの値をutf-8のSQLiteに書き込む(また、Excel上でSQLiteのコードを文字化けさせずに表示させる)には、どうしたらよいのでしょうか?