あるサーバにあるxmlファイルの内容を取得する為に
use LWP::Simple;
$url = "http://***/***.xml"; #取得するXMLファイル
$text = get($url);
以上の様な方法を用いたのですが、目的のxmlファイルを取得する際のみ、$textに格納される内容が『1文字ごとに半角スペースのようなもので区切られている』という意図しないものになってしまいます。
他のxmlファイルは問題なく取得できるのですが・・・・・・何か特別な方法が必要なのでしょうか。
No.3ベストアンサー
- 回答日時:
UTF-16 のデコードは、Perl 5.8 以降ならば Encode.pm を使い、次のようにします。
use Encode;
use Encode::Guess;
:
$text = decode("Guess", $text);
デコードした $text は utf8 となりますから、シフトJISなどに変換する必要がある場合は次のようにして下さい。
$text = encode("sjis", decode("Guess", $text));
また、それ以前のバージョンの場合には Jcode.pm を使い、ucs2 メソッドで変換します。
ただし、ucs2 は UTF-16BE(nonBOM)に相当するため、それ以外の形式の場合は pack と unpack を使い、前もって同形式に変換しておく必要があります。
XMLの場合、BOMがなければ最初は < なので、BOMと絡めてその辺をチェックするとよいでしょう。
use Jcode;
:
if ($text =~ s/^\xFF\xFE// || $text =~ /^</) {
$text = pack "n*", unpack "v*", $text;
}
else { $text =~ s/^\xFE\xFF// }
$text = Jcode->new($text, "ucs2");
変換後の $text は euc になるので、シフトJISなどに変換する必要がある場合は次のようにして下さい。
$text = Jcode->new($text, "ucs2")->sjis;
解りやすい例とご説明ありがとうございました。
Jcodeの適用に多少躓いたものの、無事成功致しました。
未だにJcode.pmが利用できないのは困り者ですね(^^;
No.2
- 回答日時:
問題の出る
$url = "http://***/***.xml
のリンク先は書くとまずいんでしょうか?
まあ、他人様のサーバならここに書くのは少し問題なのかな?どうでしょう??
そのリンク先で問題がでるかこちらでも確認できれば、誰かアドバイスをしてくれると思います。
No1の方の言われる通りかもしれませんし、その他サーバの吐き出しに問題があるかもしれませんし。
お力になれなくてすみません。
この回答への補足
投稿の際に悩んではいたのですが
とりあえず伏せて投稿させていただきました。
アドレスを提示することでその管理者に対して害が生じる可能性も否定できなかったもので・・・。
御指摘ありがとうございます。
No.1
- 回答日時:
エンコードが、UTF-16なファイルなのでは。
正当なxmlファイルなら、xml宣言でエンコーディングが判断できると思います。
参考URL:http://altba.com/bakera/hatomaru.aspx/glossary/0 …
この回答への補足
御回答ありがとうございます。
確かにUTF-16で記述されたものでした。
エンコーディングのことなのですが
その方法を御教示して戴けないでしょうか。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1257793
こちらで「UTF-16への変換」は回答されているのですが・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- AJAX 自作の地図をグーグルマップのようにしたい 3 2022/11/15 11:53
- XML XML同じ名前の要素を自動で集約するツール 1 2022/04/11 09:21
- WordPress(ワードプレス) ワードプレスにて .xmlファイルの使い方をご存知の方、よろしくお願いいたします。 2 2022/09/30 00:55
- XML Windowsで見かけるxmlファイルってどういうものですか? 1 2022/06/03 14:57
- XML iPhoneでXMLファイルを開くにはどうしたら良いのでしょうか? 1 2022/09/05 18:00
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- その他(IT・Webサービス) 見たことのない形式で日付が表示されているのでそれを解析してほしい 3 2023/01/23 16:53
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
sublimit textっていうエディタ...
-
[VB6] SQLの作成について
-
Pythonのre.split()の正規表現...
-
VBA public変数はどのようなこ...
-
C#のループでtextboxに値を入れ...
-
visual basic初心者です。 visu...
-
プログラムの素朴な質問です 分...
-
Functionの戻り値を配列にした...
-
Excel VBAでsub,dimは何の略?
-
VBSのプログラム
-
リストビューの列ヘッダーの幅...
-
エクセルVBAでテキストボッ...
-
レコードセットにnullの場合
-
二点の座標から距離や角度を求...
-
VB.NETでのイベントの途中終了
-
ユーザーフォームへのデータ入...
-
GetNextWindowがDLLファイルUse...
-
C言語のサフィックスについて
-
他のフォームから別のフォーム...
-
String型の値にスラッシュをつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
sublimit textっていうエディタ...
-
ExcelのVBAで文章にある複数の...
-
テキストボックスかラベル上の...
-
【VBS】クリップボード操作につ...
-
RichTextBoxで指定行の色を自動...
-
vba 日本語以外を抽出について
-
文字列を配列に…。
-
Pythonのre.split()の正規表現...
-
VBスクリプトでファイルのコピ...
-
VB6.0 sp5]テキストボックスと...
-
文字列を日付型情報として計算...
-
XMLファイルのattribute値がう...
-
VBScript、ClipboardDataオブジ...
-
[VB6] SQLの作成について
-
Visual Basicについてお聞きし...
-
表の文字の均等割りについて
-
perlによるxmlファイルの取得
-
Googleシート「A1」でなくて「A...
-
HTMLのデータ読み取り
-
サンプルプログラムをコンパイ...
おすすめ情報