- ベストアンサー
大量のURLをURLエンコードする方法はありますか?
日本語のキーワードの入ったURLを、EUCやUTFに一気にURLエンコードする方法を探しているのですが、見つかりません。 テキストエディターのマクロでも、独立したアプリケーションでも、エクセルなどの関数でもどのようなものでもいいので、そういったことができる方法をご存知の方がいらっしゃれば教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>=や&が変換されないようになれば最高なのですが 一応修正してみました。 --------------------------------------------------------------- using System; using System.IO; using System.Text; using System.Web; using System.Text.RegularExpressions; class urlEncoding { public static int Main(string[] args){ if(args.Length == 0){ Console.WriteLine(">urlEncoding urllist.txt"); return 1; } StreamReader sr = new StreamReader((System.IO.Stream) File.OpenRead(args[0]),Encoding.GetEncoding("SHIFT_JIS")); while (sr.Peek() > -1) { string[] s = Regex.Split(sr.ReadLine(),"\\?"); s[1]=HttpUtility.UrlEncode(s[1],Encoding.GetEncoding("euc-jp")); s[1]=s[1].Replace("%3d","="); s[1]=s[1].Replace("%26","&"); Console.WriteLine(s[0]+"?"+s[1]); } sr.Close(); return 0; } }
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
とりあえずEUCの場合で作ってみました。 --------------------------------------------------------------- using System; using System.IO; using System.Text; using System.Web; using System.Text.RegularExpressions; class urlEncoding { public static int Main(string[] args){ if(args.Length == 0){ Console.WriteLine(">urlEncoding urllist.txt"); return 1; } StreamReader sr = new StreamReader((System.IO.Stream) File.OpenRead(args[0]),Encoding.GetEncoding("SHIFT_JIS")); while (sr.Peek() > -1) { string[] s = Regex.Split(sr.ReadLine(),"\\?"); Console.Write(s[0]+"?");//?で分割されてる Console.WriteLine(HttpUtility.UrlEncode(s[1],Encoding.GetEncoding("euc-jp"))); } sr.Close(); return 0; } } --------------------------------------------------------------- 上記切取線の中身を encodeURL.cs とか適当な名前で保存します。 コマンドプロンプトで >csc encodeURL.cs として、コンパイルします。 >encodeURL URLLIST.txt >outlist.txt encodeURL 変換すべきURLのリストファイル >出力ファイル名 keyword=の「=」も変換されてしまいますが、それは、お目こぼしして下さい。
お礼
どうもありがとうございます! きちんと動きました。 =や&が変換されないようになれば最高なのですが、これは手動でも一括でできないことはありません。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
ちょっとイメージが湧かないのですが、 例えば、 URLのリストが一行に1つファイルに入っていて、 あるいは、HTMLの文書の中にリンクとして埋もれているとか? Shift_JISで http://www.sample.ne.jp/search.html?keyword=日本語 みたいになってるか http://www.sample.ne.jp/検索.html みたいになっているとかいう意味で http://www.sample.ne.jp/検索.html がEUCの場合 http://www.sample.ne.jp/%B8%A1%BA%F7.html の様になるというような意味なのでしょうか? 上記について具体的に補足していただけますか? あと、.NET Framworkは、インストールされていますか? または、Perl5.8は、使用できますか?
補足
ありがとうございます。 Shift-JISで、 http://www.sample.ne.jp/search.html?keyword=日本語 http://www.sample.ne.jp/search.html?keyword=英語 のような、URLのリストが1行にひとつ書いてあるテキストファイルがあるというイメージです。 これをEUCの場合であれば、 http://www.sample.ne.jp/search.html?keyword=%C6%FC%CB%DC%B8%EC http://www.sample.ne.jp/search.html?keyword=%B1%D1%B8%EC と書いてあるテキストファイルに一気に変換するというのが理想です。 .NET Frameworkは1.1というものがインストールされています。Perlは5.006001というものはすぐに使えますが、もしPerl 5.8でないといけないのであれば、使用できる環境を整えます。
お礼
完璧に動作しました。どうも本当にありがとうございました。