标题: [格式转换] ansi 字符转 url编码 [打印本页]
作者: Junyee 时间: 2017-7-24 19:30 标题: ansi 字符转 url编码
喜欢用批处理+wget 来抓网页资源, 主要是修改起来方便啊,不用编译.
现在网页都是utf8编码,如果网址是 GET/POST 的话, 批处理的 ansi 编码 处理起来非常麻烦,
于是花了点时间, 写了一个简单的小程序, 可以方便的将 ansi 字符串(变量)转 url编码.
http://bcn.bathome.net/s/tool/index.html?key=a2u
作者: Junyee 时间: 2017-7-24 19:32
论坛上传太慢了,13KB传了几分钟.
作者: qazplm 时间: 2017-7-24 20:03
本帖最后由 qazplm 于 2017-7-24 22:04 编辑
url编码一般有utf-8和gb2312两种,而且也不是所有的字符都需要转换- @echo off
- powershell "[void][Reflection.Assembly]::LoadWithPartialName('System.Web');[Web.HttpUtility]::UrlEncode('黄江琴是谁',[Text.Encoding]::GetEncoding('utf-8'));"
- pause
复制代码
作者: 老刘1号 时间: 2017-7-24 21:34
写过个类似的:http://www.bathome.net/thread-43919-1-1.html
作者: happy886rr 时间: 2017-7-24 23:01
本帖最后由 happy886rr 于 2017-7-25 11:00 编辑
JS混编- 1>1/* :
- @cscript -nologo -e:jscript "%~f0" %*&@exit /b %errorlevel%*/
-
- try{
- WScript.echo(encodeURIComponent(WScript.Arguments(0)));
- }catch(e){
- WScript.echo('Usage: juri [url]');
- }
复制代码
C#混编- /*************************************************************************
- @ECHO OFF&CLS&TITLE MINI CSHARP COMPILER BY HAPPY
- for /f "delims=" %%a in ('dir /a-d /b /s "%systemroot%\Microsoft.NET\Framework\csc.exe"') do (
- >nul "%%~a" /out:juri.exe "%~f0" && juri.exe
- pause&exit/b
- )
- )
- set/p=You needs Microsoft.NET!&exit/b
- **************************************************************************/
-
- /*************************************************************************
- C# URL ENCODE TOOL, COPYRIGHT@2017~2019, VERSION 1.0
- JURI.EXE
- **************************************************************************/
- using System;
-
- namespace Juri
- {
- class JuriCore
- {
- static void Main(string[] argv)
- {
- if(argv.Length == 1)
- {
- Console.WriteLine(System.Web.HttpUtility.UrlEncode(argv[0]));
- }
- else if(argv.Length == 2)
- {
- string enURL="";
- if(String.Equals(argv[0], "--UTF8", StringComparison.CurrentCultureIgnoreCase))
- {
- enURL=System.Web.HttpUtility.UrlEncode(argv[1], System.Text.Encoding.UTF8);
- }
- else if(String.Equals(argv[0], "--GB2312", StringComparison.CurrentCultureIgnoreCase))
- {
- enURL=System.Web.HttpUtility.UrlEncode(argv[1], System.Text.Encoding.GetEncoding("GB2312"));
- }
- else{
- Console.WriteLine("Unkonwn switch '{0}'", argv[0]);
- }
- Console.WriteLine(enURL);
- }
- else
- {
- Console.WriteLine("{0}"
- , "Juri v1.0 - C# URL encode tool - Copyright (C) 2017-2019\n"
- + "Usage: juri ([--UTF8|--GB2312]) [URL]\n"
- + "\n"
- + "General options:\n"
- + " --UTF8 Encode to UTF8\n"
- + " --GB2312 Encode to GB2312\n"
- + " --HELP Show help information\n"
- );
- }
- }
- }
- }
复制代码
作者: 523066680 时间: 2017-7-24 23:12
- perl -MURI::Escape -MEncode -e "print uri_escape(encode('utf8',decode('gbk','黄江琴')))"
复制代码
作者: codegay 时间: 2017-7-24 23:28
那就不要用批处理啦。
作者: Junyee 时间: 2017-7-25 06:23
本帖最后由 Junyee 于 2017-7-25 06:35 编辑
谢谢大家.论坛看着冷清, 其实还是有不少老人潜伏啊!~
javascript 也能很方便的实现这类效果.
但是 cscript 支持 js 和 网页上的又不太一样,就没有尝试.
vbs 我基本上是不懂..
powershell 学了几个小时,也放弃了.
perl 好像体积比较大.
python 学的也忘掉了.
4楼 的贴子我看过,但好像运行有错,不知道怎么样,所以才花点时间用C写了这个.
这些方案,我还是倾向于
js/vbs ,因为 windows 自带解释器.
而 powershell 在xp 等系统上是没有的.
作者: Junyee 时间: 2017-7-25 06:30
回复 3# qazplm
powershell 果然强大!
实际上, 很多情况下 url code 并不需要人为操作, 应用在提交 get 的时候会自动转化.
如 wget 会自动转为成 ansi(gb2312)
但现在大部分网页都使用了 utf-8 , ansi 的 urlcode 就会出错,如:- set keyword=黄江琴
- wget "http://www.ed2000.cc/search.aspx?SearchWord=%keyword%&pagesize=1" -O "%TMPDIR%\search_1.html"
复制代码
以前在调试 php 的时候,发现 微软系的应用大部分默认是 ansi ,如IE.
而 chrome 在提交中文网页, 是自动转化为 utf-8 的.
像这个URL.
http://www.ed2000.cc/search.aspx?SearchWord=黄江琴&pagesize=1
用ie打开会搜索不到,用chrome 则不会.
作者: 523066680 时间: 2017-7-25 08:44
本帖最后由 523066680 于 2017-7-25 09:04 编辑
写一个C版本的转换工具是极好的。
不过那几个理由真是funny,总结起来就是 —— 沉浸在自己的小世界里不能自拔。
写了就写了,多一个选项,不需要解释这么多。
作者: 老刘1号 时间: 2017-7-25 08:46
本帖最后由 老刘1号 于 2017-7-25 08:53 编辑
四楼不能运行说明你没有Word。
那就手动复制到剪切板呗~
Wscript.ECHO [UTF-8编码后文本二进制(使用0xHex表示)内容]
CS运行,在CMD中手动复制即可~
作者: PS2.0 时间: 2017-7-25 10:00
回复 8# Junyee
我还是倾向于PowerShell,因为XP早就该淘汰啦
作者: Junyee 时间: 2017-7-25 17:15
本帖最后由 Junyee 于 2017-7-25 17:18 编辑
回复 10# 523066680
好吧.
知道了,这是技术论坛,,不是聊天论坛
在别的几个论坛,边回贴发些感想什么的,好像很多人也也这么做 ,成习惯了
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |