找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 32952|回复: 7

[文本处理] [已解决]批处理怎样把文本的字符串编码化urlencode?

[复制链接]
发表于 2011-6-1 07:18:29 | 显示全部楼层 |阅读模式
本帖最后由 w1983912 于 2011-6-1 18:03 编辑

我也不知道该怎么表达这个需求 。。。。。。

a.txt内容:
xmyyy2y@@知道
xx55lud@@合同x路
5abccc@@人民
pxeke5xxx@@旅游abcd


如 第一行        xmyyy2y@@知道          得到      <a href="/x/xmyyy2y/%e7%9f%a5%e9%81%93.html">知道</a>
                     xx55lud@@合同x路       得到      <a href="/x/xx55lud/%e5%90%88%e5%90%8cx%e8%b7%af.html">合同x路</a>

注意: "知道"的utf-8格式的url编码(urlencode)是"%e7%9f%a5%e9%81%93"        参考转换:http://tool.chinaz.com/Tools/URLEncode.aspx
         "合同x路"的utf-8格式的url编码(urlencode)是"%e5%90%88%e5%90%8cx%e8%b7%af"

以上只是把字符串变成utf-8的编码   希望不会搞混   同样也需要字符串变成gbk的编码的批处理版本

以上只列出几行  a.txt 是gbk格式的文本 得到的x.txt也是gbk格式 有N行  


    请知道的朋友尽量帮帮忙 谢谢了

评分

参与人数 1PB +2 收起 理由
zm900612 + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-6-1 09:23:42 | 显示全部楼层
你PHP不是很牛么,怎么不用PHP
发表于 2011-6-1 09:44:03 | 显示全部楼层
本帖最后由 wankoilz 于 2011-6-1 11:09 编辑

我这有个vbs,你参考下:
  1. Function URLEncoding(vstrIn)
  2. strReturn = ""
  3. For i = 1 To Len(vstrIn)
  4.     ThisChr = Mid(vStrIn,i,1)
  5.     If Abs(Asc(ThisChr)) < &HFF Then
  6.         strReturn = strReturn & ThisChr
  7.     Else
  8.         innerCode = Asc(ThisChr)
  9.         If innerCode < 0 Then
  10.             innerCode = innerCode + &H10000
  11.         End If
  12.         Hight8 = left(cstr(hex(innerCode)),2)
  13.         Low8 = right(cstr(hex(innerCode)),2)
  14.         strReturn = strReturn & "%" & Hight8 & "%" & Low8
  15.     End If
  16. Next
  17. URLEncoding = strReturn
  18. End Function

  19. Function URLUncoding(code)
  20. str="0123456789abcdef"
  21. set reg=new regexp
  22. reg.ignoreCase=true
  23. reg.global=true
  24. reg.pattern="%\w\w%\w\w"
  25. set matches=reg.execute(code)
  26. for each matche in matches
  27.     matche=replace(matche,"%","")
  28.     sum=0
  29.     for i=1 to 4
  30.         singlechr=mid(matche,i,1)
  31.         number=instr(1,str,Lcase(singlechr),1)-1
  32.         sum=sum+number*16^(4-i)
  33.     next
  34.     word=chr(sum-65536)
  35.     URLUncoding=URLUncoding&word
  36. next
  37. End Function

  38. s=inputbox("输入Code或中文")
  39. If inStr(s,"%") then
  40.     return=msgbox(URLUncoding(s),0,"结果")
  41. Else
  42.     return=msgbox(URLEncoding(s),0,"结果")
  43. End if
复制代码
抱歉,刚才仓促回帖,没注意到是utf-8,这个vbs只支持gbk
发表于 2011-6-1 10:02:02 | 显示全部楼层
批处理如何把中文转为URL编码?
http://bbs.bathome.net/thread-6084-1-1.html
 楼主| 发表于 2011-6-1 16:36:45 | 显示全部楼层
谢谢以上朋友的指点 代码过于烦琐 我这菜鸟级的 很难凑出来 很费精力  现在也只能一个文件夹一个文件夹的弄了
发表于 2011-6-1 17:10:13 | 显示全部楼层
PHP水平有待提高

  1. <?php
  2. $in = fopen('a.txt', 'rb');
  3. $out = fopen('x.txt', 'wb');
  4. if (!$in || !$out) die();
  5. while (!feof($in)) {
  6.         $str = trim(fgets($in));
  7.         $str = iconv('gbk', 'utf-8', $str);
  8.         $arr = explode('@@', $str);
  9.         $str = sprintf('<a href="/x/%s/%s">%s</a>',
  10.                         urlencode($arr[0]), urlencode($arr[1]), $arr[1]);
  11.         $str = iconv('utf-8', 'gbk', $str);
  12.         fputs($out, "$str\r\n");
  13. }
  14. fclose($in);
  15. fclose($out);
  16. ?>
复制代码
 楼主| 发表于 2011-6-1 17:58:32 | 显示全部楼层
感谢
说实话,不怕大家笑话  我根本就没学任何语言  都是需要用到才学一下  功能我知道 但是不会写代码  只会稍微修改和照搬代码  不会灵活使用  想法虽有 就是不会代码  郁闷啊
能得到大家的帮助 很高兴 这也是我继续做站的动力  光搜索到的还是有很多不足
发表于 2011-6-1 19:50:45 | 显示全部楼层
5# w1983912


用for命令遍历一下文件夹即可。

批处理for命令从入门到精通以及配套练习题
http://bbs.bathome.net/thread-2189-1-1.html
http://bbs.bathome.net/thread-2336-1-1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 09:28 , Processed in 0.020421 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表