ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

EH搜索     
EH云课堂-专业的职场技能充电站 Excel转在线管理系统,怎么做看这里 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! Excel 2016函数公式学习大典 挑战你的Excel知识,一起测验下 免费下载Excel行业应用视频
300集Office 2010微视频教程 Tableau-数据可视化工具 精品推荐-800套精选PPT模板,点击获取 ExcelHome出品 - VBA代码宝免费下载
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 Excel VBA经典代码实践指南
查看: 2630|回复: 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鲜花 +2 收起 理由
lolmuta + 2 感谢帮助

查看全部评分

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 | 显示全部楼层

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鲜花 +3 收起 理由
香川群子 + 3 值得肯定

查看全部评分

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

本版积分规则

关注官方微信,每天学会一个新技能

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

GMT+8, 2019-9-16 02:27 , Processed in 1.096103 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

© 1999-2020 Wooffice Inc.

   

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

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

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