VB2005でencoding=Shift_JISやEUC-JPのXMLファイルを保存する方法

このQ&Aのポイント
  • VB2005でencoding=Shift_JISやEUC-JPのXMLデータをファイルに保存する方法について教えてください。
  • encoding=Shift_JISやEUC-JPのXMLデータをVB2005で保存する方法について説明してください。
  • VB2005でShift_JISやEUC-JPのエンコードを使用してXMLデータをファイルに保存する方法を教えてください。
回答を見る
  • ベストアンサー

VB2005 で encoding="Shift_JIS"や"EUC-JP"のXMLファイルを保存する方法

VB2005, XML の初心者です。 VB2005で encoding="Shift_JIS" や "EUC-JP" のXMLデータをファイルに保存するにはどうすれば良いのでしょうか。 encoding="UTF-8"であれば、下記で保存できますが、="Shift_JIS" や "EUC-JP" になると保存でエラーになってしまいます。 下記ソースでは、strXMLには正しくXMLが入っていますが、saveするとエラーになり、ファイルの中身を確認すると、日本語の箇所で切れていました。 Public Client As TcpClient Dim stream As NetworkStream stream = Client.GetStream() Dim Data(10000) As Byte Dim len As Int16 = stream.Read(Data, 0, Data.Length) strXML = System.Text.Encoding.UTF8.GetString(Data, 0, len) MsxmlDoc = New MSXML2.DOMDocument Msxmldoc.Loadxml(strXML) MsxmlDoc.save ( "C:\XML.xml") 文字コードについても初心者ですので、ヒントになるようなことでも教えていただければ幸いです。 よろしくお願い致します。

noname#51596
noname#51596
  • XML
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • HIROs-NET
  • ベストアンサー率78% (15/19)
回答No.2

返事が遅くなりました。 すみません。 MSXML2.DOMDocumentでの文字コード指定による保存ですが、OKWave内でJScript.NETを用いた回答が過去にありましたので、参考URLをご覧になってみてください。 FileStreamを使用することで実現できそうです。 >また、初歩的なことかもしれませんが、XMLファイルの宣言文にある文字コード(encoding=)はどのように読めば良いのでしょうか。 読み込んで何をしたいのでしょうか? System.Xml.XmlDocumentのLoadXMLメソッドを使用すれば、あまり気にしなくても良いと思うのですが...

参考URL:
http://okwave.jp/qa1772802.html
noname#51596
質問者

補足

回答いただいたにもかかわらず、 それに対する補足が遅くなり申し訳ございません。 やりたいことは、Aシステムから通信で送られてきたxmlをBシステムで保存したいのですが、Aシステムからは、EUC, S-jis, UTF-8 のいずれかで送られてくる可能性があるため、宣言文にある文字コード(encoding=)を読んで、それによって処理を分けたいのです。 MSXML2.DOMDocumentで文字コード(encoding=)を取得する方法はあるのでしょうか。 もし何かご存知でしたらご教授いただければ幸いです。 よろしくお願い致します。

その他の回答 (1)

  • HIROs-NET
  • ベストアンサー率78% (15/19)
回答No.1

私のサイト(HIRO's.NET)で、文字コードを指定してXMLファイルを保存する(http://hiro.wankuma.com/VBNET2005/XML/DOM/DOM03.htm)というTipsがありますのでそちらをご覧になってみてください。 文字コードについては、Wikipediaの方をご覧ください(http://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89

noname#51596
質問者

お礼

早速の回答、ありがとうございます! HIRO's.NET のページを参考にさせていただき、System.Xml.XmlDocument でできましたが、MSXML2.DOMDocument では文字コードを指定して保存することはできないのでしょうか? また、初歩的なことかもしれませんが、XMLファイルの宣言文にある文字コード(encoding=)はどのように読めば良いのでしょうか。 追加の質問になってしまいますが、 もしご存知でしたら教えていただければ幸いです。

関連するQ&A

  • VBでShift_JISへurlエンコードできないでしょうか?

    VB6もしくはVBAですが、 文字列をShift_JISへurlエンコードしたいと思います。 utfやeucは方法があったのですが、Shift_JISに関しては 見つかりませんでした。 よろしくお願いします。

  • Shift-jisのPerlから、UTF-8、EUC、Shift-jisの3つのエンコードテキストを生成

    Shift-jisで作ったPerlにて、テキストをEUC、UTF-8、Shift-jisにエンコードし外部検索サイト等にテキストリンクを飛ばしたいのですが、うまくいきません。 過去ログにUTF-8から、EUC、UTF-8、Shift-jisへのエンコード方法をみつけ http://oshiete1.goo.ne.jp/qa3745875.html 試行錯誤しましたが、Shift-jisからはうまくいきませんでした。 perl のバージョンは5.8.8です。 ご教示のほどよろしくお願いします。

    • ベストアンサー
    • Perl
  • EUCからShift_JISに保存し直す方法

    EUCで書かれたCGIをSHIFT-JISで保存し直す・・ と言う作業の過程での事なのですが・・ 秀丸を開きファイル名を指定して、 文字コードを日本語(EUC)にして、 開きます。 その後秀丸のその他-保存・読み込み-標準の文字コードで 日本語(SHIFT-JIS)にしてみましたが、どうも変わった気配が無く EUCのまんまのような気がします。 やり方間違えてますでしょうか? 秀丸をお使いでご存知の方がいらっしゃいましたら お教え下さいm(__)m

    • ベストアンサー
    • CGI
  • EUCで保存されたスクリプトにてShift_jisでのHTML出力

    perl見よう見まねで改造ができるレベルの者です。 表題の件ですが、ある登録スクリプトをEUCで保存し、登録データファイルもEUCで保存を行っているのですが、携帯からも対応させる為に、携帯用ページではShift_jisで表示を行いたいと思っています。 $word = "ああああ"; &jcode'euc2sjis(*word); 上記のようなコードで、EUCで保存されたスクリプト内の文字がShift-JISに変換されるというのを見つけたのですが、これがprint文の場合どうすれば良いのかわかりません。 例えば、 print "Content-type: text/html;charset=shift_jis\n\n"; print <<_HTML_; <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <form method="POST" action="CGIファイル"> 登録項目1<br> <input type="text" name="touroku1" value="$in{'touroku1'}"><br> 登録項目2<br> <input type="text" name="touroku2" value="$in{'touroku2'}"> </form> </body></html> _HTML_ 上記のようなHTMLをShift_jisで表示する場合、どのようにすればよいのでしょうか? use encoding 'euc-jp', STDOUT=>'shift_jis' while(<>){ print $_; } 上記のようなコードも調べたのですが、今一適用方法が解らない状況です。 また、携帯用ページではShift_jisで表示を行いたいのと同時に、登録データファイルにはEUCで保存されるようにする方法もご教授頂けますと幸いです。 宜しくお願い申し上げます。

    • ベストアンサー
    • Perl
  • VB2005でUTF-8からshift_JISに変換する方法

    VB2005の初心者です。 UTF-8のXMLデータで、一部日本語の項目が化けているのでshift_JISに変換したいのですが、やり方が分りません。 下記のとおり、XMLデータから項目を抽出して、ログに出力すると化けてしまいます。 Dim CreatorInfodNode As Xml.XmlNodeList CreatorInfodNode = xmlDoc.SelectNodes("/Mml/MmlBody/MmlModuleItem/docInfo[@contentModuleType=contains(@contentModuleType,'patientInfo')]" + _ "/mmlCi:CreatorInfo/mmlPsi:PersonalizedInfo/mmlPsi:personName/mmlNm:Name/mmlNm:fullname", nsmgr1) LbLogFlg = WriteLogFile("fullname:" + CreatorInfodNode(0).InnerText.Trim) ↓ログの出力結果 fullname:????????????????????? 皆様の知恵をお借りできれば幸いです。 よろしくお願い致します。

  • Shift_JISをeuc-jpに変換

    エクセルのデータをテキストに保存し直したデータがあります。 中身はタブ区切りの日本語の単語が数千レコード。 この時、このテキストファイルの文字コードは当然「シフトJIS」ですが、これをperlで受け取ってフォームから文字検索を行いテーブルに検索結果を表示させるプログラムを作りました。 シフトJISなので案の定、文字化けを起こしました。 なのでデータを一度「euc-jp」に変換すると「表」や「ー」などは文字化けを起こすことなく表示するようになりました。 ところが、「(1)、(2)、(3)・・・」の丸数字だけが何故か文字化けしたままで直りません。 なんとかなりませんでしょうか? #データの読み込み open F_DATA, '<', "$cgiparam" or die;  my @lines = <F_DATA>; close F_DATA; #文字コードの変換 foreach (@lines){  Encode::from_to($_,"Shift_JIS", "euc-jp"); } よろしくお願いします。

    • ベストアンサー
    • Perl
  • EUCのデータファイルをShift_jisで読み込む方法

    初めまして。 perlの知識は殆ど無く、見よう見まねで改造をするレベルです。 質問させて頂きたいのですが、 あるスクリプトにてEUCで保存(書き込まれた)されたデータファイルを、違うスクリプトにてそのデータファイルを読み込む際に、Shift_jisで読み込みたいのですが、どのような方法がありますでしょうか? それぞれのスクリプトを共通の文字コードで保存すれば良いのですが、データを保存する側のスクリプトでShift_jisにすると、"表"や"ー"などのデータが登録できなく、それの対処方法が解らなかった為、そのスクリプトとデータファイルをEUCで保存する事によって解決する事はできましたが、今度は別のスクリプトでそのデータファイルを読み込む必要があり、読み込む側ではShift_jisで保存されているスクリプトですので、文字化けが起こりデータファイルを読み込む事ができない状況です。 この読み込む側のスクリプトをEUCで保存をするのも検討しましたが、読み込む側のスクリプトが一つではなく複数ありますので、できればこれらはShift_jisのままで、データファイルを読み込む際に「Shift_jisに変換して読み込む」行為ができればと思い、質問させて頂きました。 ※具体的には会員登録用スクリプトとその登録されたデータファイルがEUCで保存されており、会員データファイルを読み込む全く別の掲示板などのスクリプトがShift_jisで保存されています。 もし宜しければご教授頂けますと幸いです。 宜しくお願い申し上げます。

    • ベストアンサー
    • Perl
  • 文字コードEUC→SHIFT-JISにすると動作しません

    http://cgikon.com/search/detail.php3?menu=1&cgi_id=412 上記の簡単なスクリプトを使いたいと思っています。 文字コードがEUCとなっており、そのままの状態で設置すれば動作します。 EUCではなく、SHIFT-JISにして動作させたいのですが、中に書かれている「EUC - JP」を「SHIFT - JIS」に書き換えて、またファイルの文字コードも「SHIFT-JIS」として保存しました。 またCSVデータも「SHIFT-JIS」に変換して保存。 変換したファイルをアップしてみましたが、表示される表の数値の箇所が真っ白になってしまいます。 一番上の行と一番左の列は表示されます。 足し算される数値の部分だけが表示されません。 どのようにすれば、EUCからシフトJISに変換して、動作させる事ができるのでしょうか。 アドバイスをお願い致します。

    • ベストアンサー
    • Perl
  • [Perl]Shift-JISのXMLを解析する場

    行き詰まってしまったので教えて下さい。 <やりたいこと> とあるAPIからXMLファイルを取得し、解析して出力する、ということをやっているのですが、元のXMLがShift-JISでエンコーディングされており、これをUTF-8に変換して出力しようとしています。 <問題> XMLを取得して解析、取り出したいパラメータが出力できるようにはなったのですが、文字のエンコーディングが上手く行っていないためか、文字化けしてしまいます。 <元のXML> <?xml version="1.0" encoding="Shift_JIS"?>  <test>   <prod count=3>    <record>     <code>アイウエ</code>    </record>    <record>     <code>カキクケ-</code>    </record>    <record>     <code>ABC</code>    </record>   </prod>  </test> <XML解析用のコード> #!usr/bin/perl use utf8; use Encode qw/ from_to encode decode /; use Encode::Guess qw/ euc-jp shiftjis 7bit-jis /; use LWP::UserAgent; use XML::Simple; use Data::Dumper; #--XML取得部分省略 #--XMLはgetで$xmlに格納 $from = guess_encoding($xml)->name; &from_to($xml,$from,"utf8"); $XML::Simple::PREFFERRED_PARSER = 'XML::SAX::PurePerl'; $xs = new XML::Simple(); $ref = $xs->XMLin($xml); $xml =~ s/<\?.*\?>//; for($i=0;$i<=$#{$ref->{'test'}->{'prod'}->{'record'}};$i++){  $name = $ref->{'test'}->{'prod'}->{'record'}[$i]->{'code'}; $name = encode('utf-8',$name); print "$i : $name\n"; } <結果> 黒ダイヤに?文字で文字化けして出力される。 どなたか原因がお分かりになりますでしょうか。 よろしくお願いいたします。

  • VBでXMLファイルを作成していますが、エラーになります

    すみません、教えてください。 VB6でXMLファイルを作成しています。コメントを入れようとすると"!--"の文字でこけます。どうしたらいいのでしょうか?コーディングは以下のようにしてます。 Dim xmlDoc As New MSXML2.DOMDocument40 'XMLドキュメント Dim xmlPI As IXMLDOMProcessingInstruction 'XML宣言 Dim node(3) As IXMLDOMNode '要素 garFNRpt = sFPass + "Sousinfile\DATA\" + sFilemei + ".xml" 'XML宣言を追加します。 Set xmlPI = xmlDoc.appendChild(xmlDoc.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""")) Set node(1) = xmlDoc.appendChild(xmlDoc.createNode(NODE_ELEMENT, """!--""kml基本情報", "")) よろしくお願いします

専門家に質問してみよう