aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 7485|回复: 13

encode问题

[复制链接]

47

主题

129

回帖

951

积分

荣誉会员

积分
951
发表于 2013-5-25 11:04:44 | 显示全部楼层 |阅读模式
有一用户名为 " 刚子868 "

username="刚子868"

使用 inet.url.encode(username);  得到数值是: %B8%D5%D7%D3868

可是网页做用htpwatch  得到的检验数据是  %25u521A%25u5B50868

没有弄清楚 是怎么转换的,观察了原始网页也没有发现什么问题

原始网址为  http://www.gamegt.com/pay/Hyk.aspx?lx=电话168
  1. http://www.gamegt.com/pay/Hyk.aspx?lx=电话168
复制代码

19

主题

294

回帖

1945

积分

新手入门

积分
1945
发表于 2013-5-25 12:21:27 | 显示全部楼层
  1. inet.url.encode( inet.url.encode(username) )
复制代码
剩下的就是转unicode的了

47

主题

129

回帖

951

积分

荣誉会员

积分
951
 楼主| 发表于 2013-5-25 15:09:12 | 显示全部楼层
采用这个方法也是不对,得到的 数值是  %25B8%25D5%25D7%25D3868

47

主题

129

回帖

951

积分

荣誉会员

积分
951
 楼主| 发表于 2013-5-25 15:24:21 | 显示全部楼层
  1. username = string.toUtf16(username);
复制代码
使用这个方法,得到的数据时不正确

47

主题

129

回帖

951

积分

荣誉会员

积分
951
 楼主| 发表于 2013-5-25 15:38:30 | 显示全部楼层
在网页源文件中找到了如下代码,不知道这个是不是和unicode  有关系
  1. //点击登录按钮
  2. $$("#btn_begincz").click(function()
  3. {
  4.     var obj = document.getElementsByName("UserLx");   
  5.      var struserlx;
  6.      var objLen= obj.length;   
  7.      var i;  
  8.      for (i = 0;i< objLen;i++)
  9.      {  
  10.          if (obj [i].checked==true)
  11.          {  
  12.               struserlx=obj [i].value;   
  13.           }  
  14.      }
复制代码
  1.      $$.ajax({
  2.                type: "GET",
  3.                url: "/JS/Ajax/Pay_Dkcz.ashx?lx=BeginCZ&curtime=" + new Date().getTime(),
  4.                dataType: "json",
  5.                data: {Dklx:escape($$("#Cardlx").text()),UserLx: struserlx,UserValue:escape($$("#UserValue").val()),Dkzh:$$("#Dkzh").val(),Dkmm:$$("#Dkmm").val(),RandCode:$$("#PayYzm").val()},
  6.                timeout: 30000,
  7.                success: function
复制代码

19

主题

294

回帖

1945

积分

新手入门

积分
1945
发表于 2013-5-25 16:39:34 | 显示全部楼层
  1. import console

  2. escape = function(str){
  3.         v = string.replace( str, '(<\x80-\xFF.>+)',
  4.                                     function(c){
  5.                                             return string.replace( string.toUtf16(c,,0),"(..)",function(c){
  6.                                                     return string.format("\u%02X%02X", c[2],c[1])
  7.                                             })
  8.                                     }
  9.         )
  10.         return string.replace(v,"\\u","%25");
  11. }

  12. console.log( escape("刚子868") )
复制代码

8

主题

10

回帖

185

积分

一级会员

积分
185
发表于 2013-5-25 21:37:48 来自手机 | 显示全部楼层
inet.url.encode(username,true)

0

主题

11

回帖

139

积分

一级会员

积分
139
发表于 2013-5-26 19:54:24 | 显示全部楼层
escape编码一次后,再一次url就是你想要的结果了
import console
import web.script;
import inet.url
str= web.script().Run("escape","刚子868");
str=inet.url.encode(str)
console.log(str)

47

主题

129

回帖

951

积分

荣誉会员

积分
951
 楼主| 发表于 2013-6-2 10:39:13 | 显示全部楼层
问题解决,多谢各位

52

主题

217

回帖

1708

积分

四级会员

积分
1708
发表于 2013-6-2 15:48:47 | 显示全部楼层
encode 第二个参数可选

47

主题

129

回帖

951

积分

荣誉会员

积分
951
 楼主| 发表于 2013-6-3 10:48:03 | 显示全部楼层
本帖最后由 海飘飘 于 2013-6-3 15:05 编辑

再次发现问题
使用如下代码
  1. import console
  2. import web.script;
  3. import inet.url
  4. str= web.script().Run("escape","电话168");
  5. str=inet.url.encode(str)
  6. console.log(str)
复制代码
得到的结果是  %25u7535%25u8BDD168
而实际网站的正确反馈结果是  %u7535%u8bdd168  这个也是最终post所需要的
红色字25是多出来的,是不是转换的格式不对,
请问这个是怎么回事呢?

9

主题

443

回帖

2546

积分

版主

积分
2546
发表于 2013-6-3 11:14:34 | 显示全部楼层
海飘飘 发表于 2013-6-3 10:48
再次发现问题
使用如下代码得到的结果是  %25u7535%25u8BDD168
而实际网站的正确反馈结果是  %u7535%u8bd ...


你的前面的意思似乎是在问怎么弄出有%25,可是看你现在的回复似乎希望不出现%25,
那你到底是要%25还是不要%25? 把话讲清楚一些真的有那么难吗?!

47

主题

129

回帖

951

积分

荣誉会员

积分
951
 楼主| 发表于 2013-6-3 15:05:31 | 显示全部楼层
25是多余的,不想要这个25

0

主题

11

回帖

139

积分

一级会员

积分
139
发表于 2013-6-5 14:02:31 | 显示全部楼层
晕,你问题里面,是需要%25的。%25其实就是%的url编码一次

escape编码一次
import console
import web.script;
import inet.url
str= web.script().Run("escape","刚子868");
console.log(str)
你的答案
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2025-3-20 04:44 , Processed in 0.064886 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

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