文字コードが混在するテキストファイルを一括変換する方法

このQ&Aのポイント
  • 文字コードの混在を解消するための手段を探しています。
  • phpファイルをUTF-8で作成していたのですが、別のエディタでS-JISで整形した行をコピペしてしまいました。
  • 文字コードが混在したphpファイルを統一するためのソフトや方法を教えてください。
回答を見る
  • ベストアンサー

文字コードが混在するテキストファイルを大量一括に統一変換する方法

過去ログは一応アレコレ漁ってみましたが、いまいちピンとこなかったので、新規に質問を立てさせていただきました。 タイトルにもありますが、文字コードの混在を解消する手段を探しています。 環境はWindowsのVistaとXP/SP2です。 主に使用しているソフトはMK-Editorというテキストエディタです。 それでは、困っていることについてお伝えしようと思いますが、どこに問題の核心があるのかがハッキリわかっていないレベルで暗中模索しておりますので、有識者の方からすれば無意味な情報があったり、欠落している情報があったりすると思います。上手にお伝えできないかもしれません。どうぞご容赦ください。 phpファイルをUTF-8で作成していたのですが、他に別のエディタで整形した行を何度かコピペで挿入してしまいました。別のエディタはS-JISで動作していました。 そのときすぐに気づけば手を打つのも早かったと思うのですが、気づかずにあちこちに同様の挿入をしたほか、そのphpファイルを雛形的に取り扱ってコピーペーストして生み出してしまったファイルがたくさんあります。 そこで、手探りしながらこのような手段を試してみました。  ・KanjiTranslatorを使い、一括変換させてみた。   http://www.kashim.com/kanjitranslator/index.html)  ・WHiNNYを使い、一つ一つ文字コードの変換をさせてみた。   http://www.forest.impress.co.jp/article/2005/08/31/whinny.html 処理後、「あるファイルでは文頭文末に余計な?や空白が挿入される」「あるファイルはエディタで開いてみると全体がS-JISで認識され、あるファイルは全体がUTF-8やUTF-8Nで認識される」などといった、私には理解の及ばない不具合・症状が出てしまいます。 そこで、推測として「文字コードが混在したphpファイルになっているのがいけないのではないか」と思い至りました。 この推測自体が間違っているのかどうかも含めて、わかっておりませんが、お知恵を貸してください。 今更0から真っ白のファイルに打ち込みなおして作るのは非現実的過ぎます。 もし、このような状況(example.phpという一つのファイルの中にUTF-8で作られた行とS-JISで作られた行が混在してしまっている状態)をスッキリなんらかの文字コードのみに統一させるソフトがあれば…。 統一してくれるのであれば、一旦EUCやISOになっても構いません。 中身が全部揃ってくれれば、その後改めてKanjiTranslatorにかければいいのだろう、と想像しています。 上手にお伝えできたかどうか自信がありませんが、どうかよろしくお願いいたします。

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

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.1

MKEditorは使ったことはありませんが、調べてみました。 http://www.mk-square.com/home/software/mkeditor/ こちらの情報によると、内部的には全てS-JISで処理しているようです。 また、通常は1つのテキストファイル内に複数の文字コードは混在させないです。 上記のサイトの内容から推測しても、MKEditorがその様な 文字コードが混在したファイルを出力するとは思えませんよ。 >example.phpという一つのファイルの中にUTF-8で作られた行とS-JISで作られた行が混在してしまっている状態 例えば、このexample.phpをMKEditorで開いた場合、 問題の部分はどのように表示されていますか? 文字化けせずに、正常に表示されていませんか? 文字コードが混在していると思われる根拠は何でしょうか? その原因は別の所にあるのではないでしょうか? なにかプログラムに不具合が出ているのなら、その不具合の内容や、 プログラムの内容を補足して頂いた方が良いと思いますよ。 カテゴリが違うので、補足では無くて、PHPのカテゴリに、 別の質問として質問された方が良いかな。

javawocc
質問者

お礼

わざわざ調べてまでご回答くださいまして、ありがとうございます。 文字コードが混在している、と考えた根拠は、 ・その部分だけがブラウザから確認したときに文字が化ける ・その症状が出たphpファイルはファイルの先頭に?が勝手に増えている といったところからです。 「混在している」という結論めいたものを自分で思い込んだのは、わかってもいないくせによくないことでした。 おっしゃってくださった通り、MKEditorは基本S-JISで処理するようではありますが、UTF-8やEUCで作成されたテキストファイルはその文字コードを保って編集できます。 そして、開いたテキストファイルの文字コードと異なる文字コードの行をコピーして持ってきた場合、コピー元の文字コードが混じりこんでしまっているのじゃないか、と感じたのです。 エディタ側の責任ではなく、一括変換ソフト側の責任かもしれません。 質問は一旦締め切りにして、もっと確実に再現される状況を絞り込んで再度適切なカテゴリへ質問しようと思います。 こんな不勉強で軽率な質問を、調査しながらお答えくださったことに深く感謝します。 ありがとうございました。

関連するQ&A

  • 文字コードの混在しているファイルの変換

    webのログを取っているのですが, URLデコード -> nkf -s としています.しかし,URLデコードしたファイルは,google等はutf-8で他はs-jis等で,文字コード(s-jis, euc, utf-8)が混在しているファイルとなってしまいます. 最終的な出力ファイルをs-jisに統一したいと思っています.nkfで行おうとしたところ,どうもうまくいきません.-Xs オプションをつけるとutf-8の部分がちゃんと表示されません.-Wsオプションをつけると今度はs-jis,eucが出力されません. なにかうまい方法はありませんか?

  • 文字コードについて(どのファイルをどの文字コードにしてWeb開発を進めていくべきか)

    【疑問の背景】 文字コードについて(どのファイルをどの文字コードにしてWeb開発を進めていくべきか)   国際標準で使われているUTF-8で統一しておけば問題はないだろうと思って開発を進めていると・・・   UTF-8は「日本語が2~4バイト」で扱われるという、バイトの扱いが厄介であるため、   できればJavaでのUTF-8で開発は避けたい、だから「Shift-JIS」にしておきたいという話があがり、   各々のファイルにどの文字コードを設定すれば良いのかがわからなくなっている状態です。    いくつかの疑問がでていまして  判る範囲で構いませんので文字コード設定の判断についてのアドバイスいただけませんでしょうか? 【現在の開発文字コード】 HTMLファイル: UTF-8 JSPファイル: UTF-8 Javaファイル(servlet): UTF-8 Javaファイル(Bean): UTF-8 Javaファイル(JSPから出来たサーブレット): UTF-8 データベース: UTF-8 【設定したい今後の予定文字コード】 HTMLファイル: UTF-8 JSPファイル: UTF-8 Javaファイル(servlet): Shift-JIS Javaファイル(Bean): Shift-JIS Javaファイル(JSPから出来たサーブレット): Shift-JIS データベース: UTF-8 【疑問1】 javaファイル(servlet,Bean)をどのコードにすべきかについて  全てS-JISにした方がいいのか、UTF-8にした方がいいのかどうあるべきなのでしょうか?  (UTF-8 で 「日本語が2~4バイト」として扱われると、どういった弊害が発生するのでしょうか?) 【疑問2】 javaファイルをS-JISに変える方法について  今はサクラエディターというツールで  名前を付けて保存 → 文字コードセット「Shift-JIS」 → 保存 → ファイル名の文字コードセットの変更完了    今はエクスプローラーから直接フォルダの中にあるファイルを触っている状況なのですが、  eclipseから「ファイルの文字コードセットを変更する方法」はありますでしょうか? 【疑問3】 「Shift-JIS」に設定して開発していく必要性について  既存で「utf-8」で設定されているjavaファイルを、「Shift-JIS」に設定して開発していく必要性はあるのでしょうか? (all in one eclipse 3.4 を入れたとき、デフォルトで「utf-8」でjavaファイルが作られるつくりになっているみたいなのですが・・・)   【疑問4】 javaファイル作成時、「Shift-JIS」の形式でファイルを生成する方法について     現在、javaファイルを作成する場合「utf-8」のコードでjavaファイルが生成されるようになっています。      【自作で作成したjavaファイルの場合】    「サクラエディターを使用して、文字コードセットをShift-JISに変更すれば、ずっとShift-JISのファイルの状態」にすることができました。      しかしここで問題が出たのですが      【JSPファイルから自動生成されたjavaファイル(servlet)の場合】    「サクラエディターを使って、Shift-JISに変更した後に、JSPファイルを編集すると、また“utf-8に戻ってしまう” 状態」です。    現状としては「JavaファイルはShift-JISに統一して欲しい」という要望なので、    JSPから自動生成されたjavaファイルが "utf-8" になってしまいます。      JSPから自動生成されたjavaファイルを    "常にShift-JISに設定する" 方法はありますでしょうか?     【環境】  OS   ・WindowsXP Pro    java開発環境   ・all in one eclipse(3.4)   ・TomCat(6.0)   ・Java JRE(1.6)   ・MySQL(5.0)

    • ベストアンサー
    • Java
  • テキストファイル 文字コード変換

    Mac OSX 10.9にて、pagesを使って文章作成をしています。 この文章をポメラDM5で閲覧・編集をしたいと思っています。 DM5はテキストファイル(shift-jis)のみを扱えるので、pagesの文章を標準テキストとして書き出したものをmiで開き、文字コードを変換しています。 ところが、文字コード変換を試みてもUTF-8にしかない文字があるので変換できない旨が表示され、変換ができないファイルがいくつかあります。 具体的にどの文字がひっかかるのかがわかれば対処のしようもあるのですが、miでは表示されません。 ネット上でUTF-8にしかない文字を調べ、元の文章内を検索してみましたが、らちがあきませんでした。 そこで、お聞きしたいのですが、 1.UTF-8のテキストファイルをshift-jisに変換するソフト等 その際、文字コードに依存する文字があったら自動変換、または強制的に変換(その文字だけ文字化けするなど)するもの ※なお、multi text converterというソフトはエラーで落ちてしまい、使えませんでした。 http://www.rk-k.com/software/mtc 2. テキストファイル中のUTF-8にしかない文字を発見して教えてくれるソフト等 3. その他の解決手段 のいずれか、有用なものを教えていただけると幸いです。 なお、windows系のPCも持っていますのでソフト等はMacにこだわりません。 できれば無料のソフトが良いのですが、難しければ有料のものでも構いません。 よろしくお願いいたします。

    • ベストアンサー
    • Mac
  • 特定ファイルのみ文字コード変換

    現在PHP5を文字コードUTF-8で使っているのですが あるphpファイルのみSJISで出力したくて色々調べphp.iniを設定したのですが、どんなに強引(無謀)な方法を使ってもブラウザで表示すると文字コードがUTF-8で認識されてしまいます。 (mbstring.detect_order default_charset mbstring.http_output などを色々変更して試しました。) <meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS" />も記述しています。 SJISで出力させたいファイルの保存文字コードはSJISです。 .htaccess でのフォルダ単位の指定も試したのですがダメでした。 phpファイル内に下記を記述してもダメでした。 header('content-type:text/html; charset=Shift_JIS'); 試しに $test $test2 = mb_convert_encoding($test ,'Shift_JIS' ,'UTF-8'); なども試してみたのですが、何をやってもブラウザはUTF-8と認識してしまうため文字化けしてしまいます。 apacheの設定で AddDefaultCharset は設定していません。 php.iniの設定は素人なりにですがやりつくしたと思うのですが・・・httpd.conf なのかと思って調べても見たのですがUTF-8の記述すらありませんでした。 ちなみに普通のhtmファイルの場合はmetaタグの文字コードをSJIS指定しただけで正しくSJISで表示されます。 ・・・というような状態なのですが、ブラウザにUTF-8と強制的に認識させてしまう設定はどこでされてしまっているのでしょうか? ・・・やはりphp.iniなのでしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • テキストファイルの文字コードが

    フォルダの中にあるテキストファイルの文字コードが UTF-8なのかShift_JISなのか どうやって調べれば良いですか? プロパティを見てもわかりません。

  • htmlページで使用している文字コードとCSSの文字コードは統一させる必要がありますか?

    html(もしくはxhtml)の文字コードを例えば「UTF-8」などにしていた場合、それに外部リンクさせるページのCSSの文字コードも統一して「UTF-8」にする必要がありますか? 例えば同一サイト内で、別の文字コードを混在させているページがあった場合、(例:静的ページはshift_jis、問い合わせページはeuc等)、CSSの文字コードは何に設定すべきなのでしょうか? コメントアウト等に日本語を使用しないのであれば、CSSの文字コードにこだわる必要はないのでしょうか? 皆さんはどうしておられますか? あまり知識がないもので、うまく質問できない点、ご容赦ください。

  • 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
  • UNIXなどで、テキストファイルの文字コードを、utf-8 → S-J

    UNIXなどで、テキストファイルの文字コードを、utf-8 → S-JIS に変換するコマンドがあれば教えてください。

  • ファイルの文字コードを調べるには?(php)

    言語はphpです。 アップロードしたファイルをからデータを1行ずつ抜き取るという作業をしています。 その際にエンコードを下記の方法で行っています。 $lines = mb_convert_encoding(fgets($fp), 'utf-8','shift-jis'); この場合、元のファイルがshift-jisであればなんら問題は無いのですが、すべてのファイルがそうとは限りません。なので、アップロードしたファイルの文字コードを調べ、その文字コードを記述するようにしたいのですが、調べる方法は何か無いでしょうか? ※[auto]を試してみましたが、その際は文字化けが起きていましましたので、出来れば他の方法でお願いします。 自分なりに調べてみましたが、良い情報を見つけることが出来なかったので、ご存知の方は宜しくお願い致します。

    • ベストアンサー
    • PHP
  • dreamweaverで文字コードを変換して保存するには

    xpでdreamweaver8を使用しています。htmlファイルをdwで編集後、文字コードを変換して(具体的にはもとのshift-jisからISO-8859-1)そのファイルを保存しなおすことは可能でしょうか。 海外のサーバーにアップしていて、shift-jisだと日本語をインストールしていないPCから接続すると、ブラウザ上でアラートみたいのがでてしまうのでそれを避けたいです。 ファイルには日本語文字列はいっさい入っていませんが、どうもいろんなテキストエディタからコピー、ペーストをくりかえしていたら元ファイルがshift-jisになってしまったようです。 htmlソース内へのメタタグ挿入での変換ではなく、ファイルそのものを文字コードかえて保存したいです。 新規ドキュメント製作内にあるデフォルトエンコードの設定を変えても、またページプロパティでエンコードをかえて適応でもだめでした。 もしくは、別名保存で保存しなおそうにも、文字コード選択のタブがありません。 そして変換可能であるならば、ファイルを一括で変換することはできるでしょうか。 また考えたのですが、dwのFTPで転送するときに文字コードのみを変換して転送することは可能でしょうか。 そのほか、メモ帳、wordpad、sakura editor、notepad++、などのテキストエディタで保存時に変更しようと企みもしましたが、 どれもutf-8は選択にあるのですが、ISO-8859-1のみありません。また、ANSIで保存しようとすると、なぜかshift-jisになってしまいます。 解決方法があれば、よろしくお願いします。