• 締切済み

文字コード判別・変換について(JIS⇒UTF-8)

あるサーバからのXMLファイルを、HTMLファイルへ加工するプログラムを作成しています。 INPUTのXMLファイルが仕様により、UTF-8、S-JIS、JIS、ISO-8859-1が同一ファイル内で混ざった状態で送られてくるのですが、(1)入力文字のコードを判別できる関数(もしくはプログラム)、(2)JIS⇒UTF-8文字列変換関数(もしくはプログラム)について、ご教授下さい。 【環境】 OS:WindowsXP 言語:VBS(又はPerl)

みんなの回答

noname#21649
noname#21649
回答No.3

以前答えていますが.探してください。 Get 命令を使っていたはず。 回答した分量が多すぎて.現行ルーチンのどの部分を回答したかは忘却。 拡張はそんなに難しい内容ではないはずです。

shinjukuocl
質問者

お礼

回答ありがとうございます。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>XMLファイルが仕様により、UTF-8、S-JIS、JIS、ISO-8859-1が同一ファイル内で混ざった状態で送られてくる 同一ファイル内でって、それってXMLの要件を満たしていないような気がします。 (1)は、VBSの場合では、そのような文字コード判別関数がありません。 また、バイナリ入出力を(現在)サポートしていいないので、プログラム的にもムリだと思います。 普通のXMLファイルだと Microsoft.XMLDOMなどのCOM(ActiveX)を使って読込(S-JISとして保存できます) また、XSLTを使うことで、HTMLファイルへの変換もできます。 変換様式が定まっているならXML+XSLTでVBSから簡単に変換できます。 (2)VBSは、同様の理由でムリっぽい。 Perlは、Encode::from_to 関数が使えます。

shinjukuocl
質問者

お礼

ご回答ありがとうございます。 この入力ファイルにおいて、こちら側ではかなり憤慨しております。ほんとムカつきます。 ・・pertで確認してみます。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

Perlのバージョンが5.8.xであるなら、 Encode::Guess が使えると思います。ただし、ISO-8859-1もありうるということなので 正しく判定できるかどうかは保証できません。

参考URL:
http://www.kt.rim.or.jp/~kbk/perl-5.8/guess.html
shinjukuocl
質問者

お礼

ご回答ありがとうございます。 早速試してみます。

関連するQ&A

  • 文字コードの変換(Shift-JISからUTF8)

    文字コードがShift-JISのCSVファイルを読み込み、UTF-8のテキストファイルに出力するのに プログラムの中で変更しようとしているのですが、うまくいきません。出力ファイルの文字コードを 確認するとShift-JISのままです。 どなたか教えていただけないでしょうか? ActivePerl v5.16.0を使用し、Encodeモジュールのfrom_toを使用しています。 #!/usr/bin/perl use strict; use warnings; use utf8; use Encode; my $input_file="input.csv"; my $output_file="output.txt"; open (IN, $input_file) or die "$!"; open (OUT, ">$output_file") or die "$!"; while (<IN>){ chomp ($_); my @data=split(/,/,$_); for(my $i=0;$i<@data;$i++){ $data[$i]=Encode::from_to($data[$i],'shiftjis','utf8'); #Shift-JISからUTF-8に変換 $data[$i]=~s/\s+//g; print OUT $_; } print OUT "\n"; } close (IN); close (OUT);

    • ベストアンサー
    • Perl
  • UTF8への変換について

    XMLをシフトJISで、作成しています。 このXMLから、XSLTを通して、UTF-8のHTMLを作成することは、 可能でしょうか? XSLTで、文字コードの変更は出来るのでしょうか? やはり、シフトJISのHTMLを作成した後で、UTF-8に変換する方法でしょうか?

    • ベストアンサー
    • XML
  • 文字コードを指定する際sjisなのかshift_jisかshift-jisなのか

    お世話になります。 perl5.8において文字コードを指定or変換する際 shift_jis shift-jis Shift_JIS SJIS EUC_JP EUC-JP utf-8 utf8 -と_の違いや大文字小文字の違いなど記述の違いを良く見かけるのですが、実際決まった指定方法などはあるのでしょうか。 逆に文字コードを指定する際、●●のように指定しても無効で●●のように指定しないと有効ではないですよ。。みたいな。 またperlに限らずPHPやHTML、XMLなどではどうなっているのでしょうか どなたかご存知の方いましたら ・上記3つの文字コードについてと ・perlのバージョンの違い、言語の違いなど 文字コードの文字列の指定に関する全般についてご教授願えませんでしょか。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • UTF-8からShift-JISへの文字コード変換について

    文字コードがUTF-8のファイルをShift-JISに変換する方法についてご存知の方がいらっしゃれば教えていただきたいです。 仕事上で、UTF-8のファイルをしばしば受領するのですが、Shift-JISに変換しないと、その後の処理ができない作業があり、今は秀丸で開いて、文字コードを変換して保存し直してます。 私以外のメンバも今後同じ作業を実施するようになり、引継ぎ手順書を作成しているのですが、ツール等を使わないWindows標準機能を用いた手順を要求され、どうすればいいかわからなくなって質問させていただきました。 よろしくお願い致します。

  • 文字コードの判別について

    とあるテキストファイルがあります。UNIX上で文字コードの判別を行いたいのですが、nkf --guess test.txtと打って調べると、 test.txt: ASCII (CRLF) となります。このファイルは、Shift-JISだという判定だと思います。 ファイルをUTF8に変換したいので、(1)Windows上のエディタ(秀丸)の機能を使ってUTF8に変換してからUNIX上にアップロードしたり、また(2)UNIX上から直接nkf -w --overwrite test.txtを実行して変換したりしたのですが、nkf --guess test.txtを打って調べると相変わらず test.txt: ASCII (CRLF) のままです。 色々調べた結果、ファイルの中身が英数字のみしか書かれていないので、nkfがこのファイルをShift JISだと「推測」しているということがわかってきました。確かに、試しにファイルの中身に日本語を書いて保存して実行してみると、ようやくnkf --guess test.txtの結果が test.txt: UTF-8 (CRLF) と表示されるようになりました。 これらの結果は、ファイルの中身のマルチバイト文字のコードを見て初めて文字コードがわかるようになるというように思えます。 私の理解ではファイル自体にEUCやShift JIS、UTF-8などの文字コードがあるものとばかり思っておりました。つまり、test.txtの内容が"This is a pen."であったとしてEUC、Shift JIS、UTF-8では全く異なる三種類のファイルが存在し得るものだと思っておりました。しかしこれは私の理解が間違っていて、英数字であれば常にShift JISであり、マルチバイト文字があって初めてUTF-8なのかEUCなのかShift JISなのかが決定されるということなのでしょうか? 英数字のみのファイルでもUTF-8ファイルという前提を確認する方法はないのでしょうか? 宜しくお願いします。

  • UTF-8→JISへ変換

    http://www.php-labo.net/ で配布のフリーPHPを使わせてもらっていますが、文字コードがUTF-8形式であり、当方Windows環境やホームページビルダーで編集する際に対応していません。(UTF対応エディタ対応はしたくないです)そのため、すべてのダウンロードしたファイルをUTF-8からJISに変換するには、TaraPadか何かで単純に文字コードJISにコピペで保存すれば、良いのでしょうか?最終的にはFTPで転送するのでEUC対応になると思いますが教えて下さい。

    • 締切済み
    • PHP
  • シフトJISからUTF-8に変換

    UNIX系OSのC言語で文字列をシフトJISからUTF-8に変換する方法をご存知の方がいらっしゃいましたらご教授下さい。 なにとぞ宜しくお願いいたします。

  • PHPのコードをUTF-8に変換したい。

    なんとかメールフォーム設置までこぎ着けたのですが、届いたメールが文字化けしてしまいます。HTMLの文字コードがUTF-8、PHPの文字コードがshift-jisなので原因はそこだと考えたのですがPHP内のshift-jis表記をUTF-8に変えるとPHP内で文字化けが起こってしまいます。 MultiTextConverterなどのアプリケーションを使っても同様の文字化けが起こります。 どうすればいいのか分かりません。 よろしくお願いします。

    • 締切済み
    • PHP
  • 文字コードがUTF-8のサイトにshift_jisの入力フォームを組み込んだのですが、、

    教えて下さい。 同じような質問があったのですが、解決しなかったのでお聞きしたいのですが、現在、文字コードがUTF-8のサイトに、配布されていたcgiを使い、入力フォームを作っているのですが、こちらは文字コードが shift_jisになっています。なので、そのページだけshift_jisでもいいかなと思い、本体に使っているcssをそのまま使おうとしたところ、CSSの文字コードがUTF-8になっており、多少フォントの指定が入っていまして、これを読み込むとIEでおかしなことになってしまいました。こういった場合やはりフォントの指定をはずした方がよいのでしょうか? 後、CSSでUTF-8でフォントファミリーの指定をしていた場合、HTMLファイルの方がshift_jisになっているとやはりフォントはでないのでしょうか? 分かりずらいですが、宜しくお願いします。

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

    MSXMLを利用して、XML+XSLTをHTML出力しているのですが、 現在は、すべてシフトJISコードで行っているのですが、 これを、出力されるHTMLをEUC-JPにしたいと思っていますが、 どうすればよいでしょうか? XMLは、作業上、シフトJISが都合がよいので、変更したく ないので、パーサかプログラムで自動で変換するのが、 良いかなぁと思っていますが、パーサで自動変更は出来るのでしょか? やはりプログラムで、変換しなければいけないのでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • XML

専門家に質問してみよう