| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 975 人关注过本帖
标题:关于转义的问题
只看楼主 加入收藏
xiaohonghui0
Rank: 1
等 级:新手上路
威 望:1
帖 子:274
专家分:0
注 册:2006-4-10
收藏
 问题点数:0 回复次数:11 
关于转义的问题

我用到更新语句,碰到一个棘手的问题:

如果输入的内容里面含有单引号或双引号,它就和代码里面的混合了,分不清楚,我用过replace函数将英文的'转化为中文的‘,但是效果不好,不知道有没有好的方法?

搜索更多相关主题的帖子: 转义 
2007-03-02 17:16
cdwyj
Rank: 1
等 级:新手上路
威 望:1
帖 子:127
专家分:0
注 册:2007-2-21
收藏
得分:0 

' 检查sql字符串中是否有单引号,有则进行转化
function CheckStr(str)
dim tstr,l,i,ch
l=len(str)
for i=1 to l
ch=mid(str,i,1)
if ch="'" then
tstr=tstr+"'"
end if
tstr=tstr+ch
next
CheckStr=tstr
end function

别问我原理,其实我不懂。
等待达人解释原理


2007-03-02 18:49
做人很低调
Rank: 5Rank: 5
等 级:贵宾
威 望:18
帖 子:1268
专家分:0
注 册:2006-8-2
收藏
得分:0 
一个简单的方法就是 Replace(str,"'","''")

其实我很低调,只是你不知道...
2007-03-03 08:47
cdwyj
Rank: 1
等 级:新手上路
威 望:1
帖 子:127
专家分:0
注 册:2007-2-21
收藏
得分:0 

我想到一个问题……

如果字符串中本来就有<''>这样的内容,会不会变成<''''>而脱离原来的意思呢?

因为我发的代码不是我写的,所以不是很明白这个问题是怎么解决的。
大家能告诉我一下么?


2007-03-03 18:42
xiaohonghui0
Rank: 1
等 级:新手上路
威 望:1
帖 子:274
专家分:0
注 册:2006-4-10
收藏
得分:0 

很奇怪版主的解决方法,Replace(str,"'","''"),为何要用两个单引号来代替,不过这种方法确实解决了问题。

另外,在用文本框将内容重新显示时,如果内容里含有双引号的话,文本框中不知为何,双引号后面的就不能显示了

如:

地 址:
10'rr"yyyyyy

用文本框显示:

地 址:

请问这是什么原因?


曾用asp做过公司管理系统,新闻发布系统,个人网站之类,可代做网站 有意者请联系我,电话:13714123661
2007-03-05 11:00
xiaohonghui0
Rank: 1
等 级:新手上路
威 望:1
帖 子:274
专家分:0
注 册:2006-4-10
收藏
得分:0 

哦,上面文本框内容怎么没显示,它里面的内容是:

10'rr,双引号和它后面的内容就没有了,奇怪!!!


曾用asp做过公司管理系统,新闻发布系统,个人网站之类,可代做网站 有意者请联系我,电话:13714123661
2007-03-05 11:01
xiaohonghui0
Rank: 1
等 级:新手上路
威 望:1
帖 子:274
专家分:0
注 册:2006-4-10
收藏
得分:0 

自己回答自己的问题:

<input name="tx4" type="text" id="tx42" value=<%=replace(rs("address"),"'","'")%>

这样子解决了。


曾用asp做过公司管理系统,新闻发布系统,个人网站之类,可代做网站 有意者请联系我,电话:13714123661
2007-03-05 12:10
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 

'字符串检测函数
Function CheckStr(str)
Dim tstr,l,i,ch
l=len(str)'取得要检测的字符串长度
'循环一个字符一个字符的分析整个字符串
for i=1 to l
ch=mid(str,i,1)'取得字符串中的一个字符。
if ch="'" then'如果等于'号
tstr=tstr+"'"'将单引号赋给tstr临时变量
end if
tstr=tstr+ch'将临时变量的字符串和取出来的一个字符进行合并。
next
CheckStr=tstr'返回函数处理结果
End function
这个函数一大问题就是会出现4楼说的现象,原因在于tstr=tstr+ch这句话的出现位置。
假设字符串中某个字符等于'的if语句条件成立,那么就会执行if内的代码,而end if后还会执行后面的代码但是。ch这时等于'就会出现''这种情况。

2007-03-05 12:26
cdwyj
Rank: 1
等 级:新手上路
威 望:1
帖 子:127
专家分:0
注 册:2007-2-21
收藏
得分:0 
那么
Replace(str,"'","''")

会不会有类似问题呢?如果没有,为什么?

这个命令的意思难道不是把所有的'都变成''?

2007-03-05 22:23
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
以下是引用cdwyj在2007-3-5 22:23:07的发言:
那么
Replace(str,"'","''")

会不会有类似问题呢?如果没有,为什么?

这个命令的意思难道不是把所有的'都变成''?

这个不会有问题Replace是匹配替换的,所以会把符合匹配的字符全替换。

2007-03-06 09:17
快速回复:关于转义的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017008 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved