Board logo

标题: [文本处理] [已解决]批处理怎样把文本的字符串编码化urlencode? [打印本页]

作者: w1983912    时间: 2011-6-1 07:18     标题: [已解决]批处理怎样把文本的字符串编码化urlencode?

本帖最后由 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行  


    请知道的朋友尽量帮帮忙 谢谢了
作者: Demon    时间: 2011-6-1 09:23

你PHP不是很牛么,怎么不用PHP
作者: wankoilz    时间: 2011-6-1 09:44

本帖最后由 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
作者: Batcher    时间: 2011-6-1 10:02

批处理如何把中文转为URL编码?
http://bbs.bathome.net/thread-6084-1-1.html
作者: w1983912    时间: 2011-6-1 16:36

谢谢以上朋友的指点 代码过于烦琐 我这菜鸟级的 很难凑出来 很费精力  现在也只能一个文件夹一个文件夹的弄了
作者: Demon    时间: 2011-6-1 17:10

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. ?>
复制代码

作者: w1983912    时间: 2011-6-1 17:58

感谢
说实话,不怕大家笑话  我根本就没学任何语言  都是需要用到才学一下  功能我知道 但是不会写代码  只会稍微修改和照搬代码  不会灵活使用  想法虽有 就是不会代码  郁闷啊
能得到大家的帮助 很高兴 这也是我继续做站的动力  光搜索到的还是有很多不足
作者: Batcher    时间: 2011-6-1 19:50

5# w1983912


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

批处理for命令从入门到精通以及配套练习题
http://bbs.bathome.net/thread-2189-1-1.html
http://bbs.bathome.net/thread-2336-1-1.html




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2