• 締切済み

文字コード判別・変換について(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