这是一个mysql的小题,但是最近在看一个SO题的时候发现了一个不懂的查询
mysql_query("SET CHARACTER SET utf8");
mysql_query("insert into users (username,pass,fname,lname,phone,city) VALUES (N'$email',N'$pass',N'$fname',N'$lname',N'$phone',N'$city')");
插入查询中的 N'...' 是什么意思? 在处理 UTF8 时是否需要这样做?
如果我必须编写相同的查询,我会这样写:
mysql_query("insert into users (username,pass,fname,lname,phone,city) VALUES ('$email','$pass','$fname','$lname','$phone','$city')");
两者有什么区别?
最佳答案
NVarchar是用于 Unicode 的数据类型。如果您的数据库不存储多语言数据,那么您可以继续使用 Varchar。例如:N'abc'(如您的情况)只是将您的字符串转换为 unicode。
默认情况下,SQL 服务器对 varchar 使用 Windows-1252 字符代码。它包含大多数拉丁语系语言(英语、德语、法语等)的字符,但不包含非拉丁语系语言(波兰语、俄语等)的字符。如上所述,nvarchar 用于解决该问题,因为它适用于包含那些缺失字符的 Unicode。这是有代价的,存储 nvarchar 所占用的空间是 varchar 的两倍。
将 N 放在字符串前面可确保字符在放入 nvarchar 列之前转换为 Unicode。大多数时候你可以把 N 关掉,但我不推荐它。安全总比遗憾好得多。
关于Mysql - 插入 N'...',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28238180/