【问题标题】:My code changes when I insert it in MySQL当我将代码插入 MySQL 时,我的代码发生了变化
【发布时间】:2013-06-03 18:23:02
【问题描述】:

我用这个网页http://javascriptobfuscator.com/default.aspx 混淆了一个小脚本。

$(document).ready(function(){
$("#likee").fadeOut("fast");
}); 

而混淆后的代码是:

$(document)["\x72\x65\x61\x64\x79"](function (){$("\x23\x6C\x69\x6B\x65\x65")["\x66\x61\x64\x65\x4F\x75\x74"]("\x66\x61\x73\x74");} );

我正在使用表单将混淆代码插入 mysql。但是,当我插入代码时,我得到了这个:

$(document)["x72x65x61x64x79"](function (){$("x23x6Cx69x6Bx65x65")["x66x61x64x65x4Fx75x74"]("x66x61x73x74");} );

有人知道为什么要删除反斜杠吗?

我的代码可以在没有反斜杠的情况下工作吗?

【问题讨论】:

  • 您是先mysql(i)_real_escape_string 输入的吗?
  • 没有。 "x23""\x23" 完全不同。一个是 3 个字母 (x,2,3),另一个是单个字符。
  • 也添加你的 php 代码

标签: php javascript


【解决方案1】:

我相信这与编码有关。我猜你在插入数据的 text/varchar(或某种排序)列使用 utf8 编码格式。

utf8编码格式只接受可以用3个字节表示的unicode字符,但是\x23字符需要4个字节,所以mysql剥离了这个字符。

如何解决? 你有 mysql 5.5 或更高版本吗?您可以将列编码从 utf8 更改为 utf8mb4。这种编码允许 4 个字节的字符。

来源:"Incorrect string value" when trying to insert UTF-8 into MySQL via JDBC?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多