ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 6452|回复: 22

[求助] 如何Encode Url 字元 ' ?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-7-2 10:19 | 显示全部楼层 |阅读模式
本帖最后由 lolmuta 于 2015-7-2 10:42 编辑

一个利用javascript encode 的代码
  1. Function encodeURI(strText As String) As String
  2.     With CreateObject("msscriptcontrol.scriptcontrol")
  3.         .Language = "JavaScript"
  4.         encodeURI = .Eval("encodeURIComponent('" & strText & "');")
  5.     End With
  6. End Function
复制代码


但在使用时,发现若strText参数字元内带有' 的字的话,就会一直出现错误,请问应如何修正呢?谢谢。

尝试转带有'字元而出错的例子
  1. Sub testencode()
  2.     Dim a$
  3.     a = "TIME_STAMP > TO_DATE('2015/07/02 10:40','YYYY/MM/DD HH24:MI')"

  4.     Debug.Print  encodeURI(a) 'error

  5. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2015-7-2 12:12 | 显示全部楼层
把 '  replace成  \'
类似的字符还有:
\
chr(13)
chr(10)
chr(0)
分别需要 replace 成:
\\
\r
\n
\0

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-7-3 16:07 | 显示全部楼层
wcymiss 发表于 2015-7-2 12:12
把 '  replace成  \'
类似的字符还有:
\

想不到是wcymiss 回覆,真让人惊喜…
一直没有时间测试,
刚刚测了一下,真的可以运作

将encode 函数改成如下
  1. Private Function encodeURI(strText As String) As String
  2.     strText = Replace(strText, "", "\")
  3.     strText = Replace(strText, "'", "\'")
  4.     strText = Replace(strText, Chr(13), "\r")
  5.     strText = Replace(strText, Chr(10), "\n")
  6.     strText = Replace(strText, Chr(0), "\0")

  7.     With CreateObject("msscriptcontrol.scriptcontrol")
  8.         .Language = "JavaScript"
  9.         'encodeURI = .Eval("encodeURIComponent('" & strText & "');")
  10.         encodeURI = .Eval("encodeURI('" & strText & "');")
  11.     End With
  12.    
  13.    
  14. End Function
复制代码



TA的精华主题

TA的得分主题

发表于 2015-7-8 12:18 | 显示全部楼层
lolmuta 发表于 2015-7-3 16:07
想不到是wcymiss 回覆,真让人惊喜…
一直没有时间测试,
刚刚测了一下,真的可以运作

你在函数中改变了参数strText的值,建议按值传递参数:byval strText

TA的精华主题

TA的得分主题

发表于 2015-7-8 17:01 | 显示全部楼层
今天刚学习吴姐的encodeURI,没想到就看到改进版。收藏学习。

TA的精华主题

TA的得分主题

发表于 2015-7-8 17:02 | 显示全部楼层
追问下:如果是解码URL,是不是也有特殊字符处理的问题?

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-7-8 17:44 | 显示全部楼层
本帖最后由 lolmuta 于 2015-7-8 17:58 编辑
williamsmile 发表于 2015-7-8 17:01
今天刚学习吴姐的encodeURI,没想到就看到改进版。收藏学习。

欣赏一下外国人的暴力硬写encode与decode,感觉似乎也没多麻烦…不过麻烦的是中文字转不了
encode的部份,在我还没问到答案前,暂用的替代方案。

encode
http://stackoverflow.com/questio ... string-in-excel-vba

decode
http://stackoverflow.com/questio ... ilt-in-url-decoding

TA的精华主题

TA的得分主题

发表于 2015-7-8 21:28 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-7-8 22:06 | 显示全部楼层
williamsmile 发表于 2015-7-8 17:01
今天刚学习吴姐的encodeURI,没想到就看到改进版。收藏学习。

啥改进啊?

其实是楼主在连接字符串时把单引号 ' 嵌套了,疏忽而已。

把单引号 ' 改成 双引号 " 就OK了

Function encodeURI(strText As String) As String
    With CreateObject("msscriptcontrol.scriptcontrol")
        .Language = "JavaScript"
        encodeURI = .Eval("encodeURIComponent(""" & strText & """);")
    End With
End Function

TA的精华主题

TA的得分主题

发表于 2015-7-8 22:12 | 显示全部楼层
lolmuta 发表于 2015-7-8 17:44
欣赏一下外国人的暴力硬写encode与decode,感觉似乎也没多麻烦…不过麻烦的是中文字转不了
encode的部份 ...

这些代码,eh里有很多啊~  你搜一下,出来一堆呢~~

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-25 20:01 , Processed in 0.038074 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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