DOBON.NET DOBON.NETプログラミング掲示板過去ログ

XMLでのパス名

環境/言語:[C#]
分類:[.NET]

久しぶりですが、またお願いします。
最近、iTunesを使っています。すばらしいですねー。
調べて見ると、溜め込んだ音楽データは、デフォルトで[マイドキュメント]-[マイミュージック]-[iTunes]にある[iTunes Music Library.xml]というXMLファイルに書き込まれています。
これを利用して、希望する音楽ファイルを希望するディレクトリにコピーするソフトを作ろうと思っています。しかし、ファイル名が以下のようにエンコードされていて、ファイルが操作できません。1バイト文字は問題ないのですが2バイト文字が入ると、困ったことになります。

・空白" "は%20になる(HTMLの親類だから納得)
・2バイト文字になると、"\ポッドキャスト\"は/%E3%83%9D%E3%83%83%E3%83%89%E3%82%AD%E3%83%A3%E3%82%B9%E3%83%88/となっています。

字数から推し量ると、%E3%83%9Dが"ポ"のようです。%E3が文字の区切りなんでしょうか?そうなると"839D"が"ポ"に当たりますが、"ポ"の区点コードは"0561"、JISコードは"255D"、シフトJISコードは"837C"、Unicodeは"30DD"になるようです。(該当するものがない!)
これをどのようにすれば、普通に操作できるファイル名にデコードできるでしょうか。
  • 題名: Re[1]: XMLでのパス名
  • 著者: |ω・`)
  • 日時: 2005/10/24 12:39:36
  • ID: 13423
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
UTF-8をURLエンコードしたのかな?
> ・2バイト文字になると、"\ポッドキャスト\"は/%E3%83%9D%E3%83%83%E3%83%89%E3%82%AD%E3%83%A3%E3%82%B9%E3%83%88/となっています。

string Source = @"ポッドキャスト";
string Encoded = System.Web.HttpUtility.UrlEncode(Source, System.Text.Encoding.UTF8);
string Decoded = System.Web.HttpUtility.UrlDecode(Encoded, System.Text.Encoding.UTF8);
  • 題名: Re[2]: XMLでのパス名(できました!)
  • 著者: 可不可
  • 日時: 2005/10/25 10:21:38
  • ID: 13442
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
魔界の仮面弁士様、ありがとうございます。
HTMLの親類だからWeb関係を調べれば良かったんですね。視野狭窄に陥ってました。(それにしても、クラスを使いこなすにはいろいろたいへんですねー)

ちなみに、System.Webクラスはソリューションエクスプローラの「参照設定」で追加しないと使えませんので、念のため。

> string Source = @"ポッドキャスト";
> string Encoded = System.Web.HttpUtility.UrlEncode(Source, System.Text.Encoding.UTF8);
> string Decoded = System.Web.HttpUtility.UrlDecode(Encoded, System.Text.Encoding.UTF8);
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板