预备知识
本实验要求实验者具备如下的相关知识。
为了保证用户输入的信息不会影响到程序进程,往往会对用户的输入进行处理。之前是对危险字符进行替换,但是有些字符的替换会影响用户的表达,那么就可以用转义的方法对用户的输入符号进行完整保留。本实验有三个部分,第一部分是自定义转义函数,第二三部分都是用标准的addslashed()函数和mysql_real_escape_string()来进行转义。
addslashes()函数在指定的预定义字符前添加反斜杠。
这些预定义字符是:单引号(')、双引号(“)、反斜杠(\)、NULL。
mysql_real_escape_string()函数转义SQL语句中使用的字符串中的特殊字符。
下列字符受影响:\x00、\n、\r、\、’、”、\x1a。
字符、字符集与字符序
字符(character)是组成字符集(character set)的基本单位。对字符赋予一个数值(encoding)来确定这个字符在该字符集中的位置。
字符序(collation)指同一字符集内字符间的比较规则。
UTF8
由于ASCII表示的字符只有128个,因此网络世界的规范是使用UNICODE编码,但是用ASCII表示的字符使用UNICODE并不高效。因此出现了中间格式字符集,被称为通用转换格式,即UTF(Universal Transformation Format)。
宽字节
GB2312、GBK、GB18