python把特殊字符存入mysql

2023-01-31 05:01:55 python 存入 特殊字符
凌晨6点半啦,TMD,搞了我一个晚上,网上找了N多的资料没有一个正确的,要不就是说Mysql自已过滤特殊字符要转义,要不就说用PHP的函数进行函数转义,唉没有一个能用的上的。这个互联网是怎么了,真搞败了。还是自己动脑子吧。可怜我那10几个脑细胞就这样没啦。唉。。。。:(
如果想将特殊字符存入mysql有一点难度。因为mysql自已自动过虑特殊字符像引号,单引号,\,等。都在插入数据的时候被mysql数据库自己过虑了。有牛人用MYSQL注入的方法,(原来俺也玩过WEB注入搞别人的站)。但是拿来放在我现在的项目上试过以后还是不行,认为虽然转义过还是有一点差别的,例如,我想把 \ 放入MYSQL,用 \\ 转义的方式来做,虽然放入数据库是 \,读出来还是\ 但是,还是觉得怪怪的,用到我的项目还真的是不行,
下面用下我的成果,来源于python正则表达式,看下面关于Python部分截取:
-------------------------------------------
反斜杠的麻烦

在早期规定中,正则表达式用反斜杠字符 ("\") 来表示特殊格式或允许使用特殊字符而不调用它的特殊用法。这就与 Python 在字符串中的那些起相同作用的相同字符产生了冲突。
让我们举例说明,你想写一个 RE 以匹配字符串 "\section",可能是在一个 LATEX 文件查找。为了要在程序代码中判断,首先要写出想要匹配的字符串。接下来你需要在所有反斜杠和元字符前加反斜杠来取消其特殊意义。

字符 阶段 \section 要匹配的字符串 \\section 为 re.compile 取消反斜杠的特殊意义 "\\\\section" 为字符串取消反斜杠
简单地说,为了匹配一个反斜杠,不得不在 RE 字符串中写 '\\\\',因为正则表达式中必须是 "\\",而每个反斜杠按 Python 字符串字母表示的常规必须表示成 "\\"。在 REs 中反斜杠的这个重复特性会导致大量重复的反斜杠,而且所生成的字符串也很难懂。
解决的办法就是为正则表达式使用 Python 的 raw 字符串表示;在字符串前加个 "r" 反斜杠就不会被任何特殊方式处理,所以 r"\n" 就是包含"\" 和 "n" 的两个字符,而 "\n" 则是一个字符,表示一个换行。正则表达式通常在 Python 代码中都是用这种 raw 字符串表示。常规字符串 Raw 字符串 "ab*" r"ab*" "\\\\section" r"\\section" "\\w+\\s+\\1" r"\w+\s+\1"
__________________________________________________
看到了吧。呵。呵就是用这个方法。。。比如你想存入有特别符号的字符串。那么前面加个 R
就行啦。呵。呵。试过我在本地python2.5+mysql5.0成功。
python正则参考:wiki.ubuntu.org.cn/Python%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%93%8D%E4%BD%9C%E6%8C%87%E5%8D%97
如果你测试不行。给我留言吧,大家一块探讨~!!

相关文章