mysql中单引号问题 ,不解

现在数据库编程,都使用传参方式,不仅很好地避免了SQL注入。在编写代码时思路也很清晰。但是最近在对项目中的代码进行测试时,所有可以接受文本框的地方输入单引号会出问题。该单引号不是英文单引号,也不是中文单引号。而是在中文单引号后再加一个英文单引号。很是奇怪,使用smartsniff检查发送到服务器执行的语句,和返回错误,中文单引号编程了/..,英文单引号变成了/'.该语句发送到服务器执行的返回结果是,#42000错误,好像是说语法错误,但是直接从smartsniff中捕获到的这条语句放到服务器执行却不提示错误。当然执行的结果中也就没有中文单引号这个符号了。经过在navicat中直接填入‘后更新,发现一个中文单引号等于两个点符号。但是真是两个..号吗,再用smartsniff一看两个中文单引号居然占了六个字节,奇怪的是 一个对应的是E2 80 99,第二个对应E2 80 98,如果还有第三个又对应E2 80 99,第四个对应E2 80 98。一直递归下去。而一个中文单引号后加一个英文单引号为5C A1 AF 5C 27 ,27是英文单引号ascii码,5C是/反斜杠的ascii码。也就是说A1 AF是中文单引号的ascii码了。上面是三个字节,下面是2个字节,而/表示后面的字符是原字符的意思吧,但单个ascii字符没有这么大,最大就7F吧。有点搞不清,多半服务器端接受到字符时就是因为解析错误导致的。这个等以后看看mysql源码时在来想想是什么原因了。

其实为什么mysql要对中文单引号加/呢。

但如果是mysql本身的bug,为什么网上就没有人提这个问题呢。

恩,而且使用客户端时是没问题的,那是不是说是在我们这个项目中的C#连接器自己在中间搞的鬼呢,还没有使用C试一下,试了应该就知道是mysql本身的原因还是开发连接器时连接器造成的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值