
行き詰まってしまったので教えて下さい。
<やりたいこと>
とある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";
}
<結果>
黒ダイヤに?文字で文字化けして出力される。
どなたか原因がお分かりになりますでしょうか。
よろしくお願いいたします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
ん~, 手元だと <test>, </test> の両タグが落ちてる. なんでだろ....
さておき, from_to は何のため?
あと, 実は元のXML がおかしい気がする.
ありがとうございます。
not well formedが出てしまうので、元のXMLを疑ってみます。
一応
XML::Simple::PREFEERED_PARSER = `XML::SAX::PurePerl`
で上記エラーの回避は可能ですが、今度は途中から文字化けするという謎の現象が起こってしまいます。
もう少し調べてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- XML XML同じ名前の要素を自動で集約するツール 1 2022/04/11 09:21
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- WordPress(ワードプレス) ワードプレスにて .xmlファイルの使い方をご存知の方、よろしくお願いいたします。 2 2022/09/30 00:55
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- アプリ Android studio 初心者 Hello Android!しか表示されない 1 2023/08/01 08:47
- その他(IT・Webサービス) 見たことのない形式で日付が表示されているのでそれを解析してほしい 3 2023/01/23 16:53
- XML Windowsで見かけるxmlファイルってどういうものですか? 1 2022/06/03 14:57
- 数学 この数学問題、スマートに解く方法を教えてください。 3 2023/01/26 23:17
- XML iPhoneでXMLファイルを開くにはどうしたら良いのでしょうか? 1 2022/09/05 18:00
- アプリ おすすめのパスワード管理アプリを教えてください。(iOSとWindows対応) 4 2023/01/19 02:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perl UTF8で出力
-
ファイルからある文字列の個数...
-
DBMとハッシュ
-
エクセルVBA コードが同じでも...
-
C言語の問題について
-
readdir()で得られるファイル・...
-
Perl で ディレクトリ及びサブ...
-
batファイルでrenameができませ...
-
Perlの変数に文字数制限(容量...
-
requireで同じライブラリを複数...
-
perlの無名配列の使い方を教え...
-
ReadLineでの読み出し行を指定する
-
「パスが見つかりません」とい...
-
C言語で特定の行を抽出する方法...
-
VBAでCSVファイルを途中行まで...
-
シェルスクリプトについて
-
CSVファイルのフォーマット
-
ファイル名を複数個配列で確保...
-
配列を使ってファイル名のリネーム
-
ファイルロックの仕方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Perl cgiの文字化けを直したい ...
-
【エラー】Unrecognized character
-
Perl UTF8で出力
-
perlでuse utf8でsjisのファイ...
-
perlの自作ライブラリについて
-
Perl:Unicodeプロパティ作れない
-
perlのmysqlで文字化けをする、...
-
does not map to shiftjis は解...
-
sedの動作
-
Perlを用いて、XMLファイルの中...
-
消費税の計算で 税込価格から...
-
Perl utf8上でshiftjisをデコード
-
perlのLWP::Simpleでgrepの値が...
-
perlで新規ファイルを作成でき...
-
utf-8のCSVをshift_jisに変換し...
-
Perlでのファイル出力における...
-
HTTP::Request::Common qw(POST...
-
[Perl]Shift-JISのXMLを解析する場
-
[perl5.8] utf8で文字出力する...
-
ファイル出力をUTF8Nではなくて...
おすすめ情報