今天遇到了一个有趣的问题,想知道行为背后的原因.我有一个带有用户名的用户表,我对此进行查询以将唯一用户拉出来,然后对所有散列和咸味善良进行密码检查.
但是,如果我将emojis放入查询中,用户仍然会退出数据库,我想知道为什么以及需要应用什么设置.我正在使用EF,但我测试了原始的T-SQL,行为是一样的,因此EF不是罪魁祸首.
SELECT TOP 1 *
FROM Users
WHERE username = N'someuser' --Works as expected
SELECT TOP 1 *
FROM Users
WHERE username = N'someuser' --ALSO WORKS!
Run Code Online (Sandbox Code Playgroud)
我可以把emojis放在任何地方和我想要的任何数量,用户仍然返回.我显然可以使用C#代码进行额外的检查,因此这个问题可以在那里解决,但我希望它在数据库级解决,因为可能有许多其他查询进行字符串比较.
密码中的Emojis不是问题,因为散列和盐析将在C#中应用,因此密码中的表情符号都可以.