![](https://csdnimg.cn/release/download_crawler_static/87080656/bg5.jpg)
UCS-2 编码:UCS-2 是固定长度为 16 位的 unicode 字符集。每个字符都是 2 个字节,UCS-2
只支持 unicode3.0,所以不支持附加字符。
UCS-2 的优点:
对于亚洲字符的存储空间需求比 UTF-8 少,因为每个字符都是 2 个字节。
处理字符的速度比 UTF-8 更快,因为是固定长度编码的。
对于 windows 和 java 的支持更好。
UTF-16 编码:
UTF-16 也是一种 16 位编码的字符集。实际上,UTF-16 就是 UCS-2 加上附加字符的支持,也
就是符合 unicode4.0 规范的 UCS-2。所以 UTF-16 是 UCS-2 的严格超集。
UTF-16 中的字符,要么是 2 个字节,要么是 4 个字节表示的。UTF-16 主要在 windows2000
以上版本使用。
UTF-16 相对 UTF-8 的优点,和 UCS-2 是一致的。
总结:在亚洲进行在 web 开发时,面向的是全球,使用 UTF-8 编码是绝对没有错的,面向亚
洲的话,使用UCS-2 和 UTF 编码效率会更高。综上所述,使用UTF-8 编码绝对没有错,不会
出现编码乱码的现象。
25.Sql Sever 中 char、varchar、nchar 和 nvarchar 的对比区别!
答:ncahr 和 nvarchar 采用 unicode 编码,固定每个字符占用两个字节,char 和 varchar
固定每个字符采用一个字节。
所以一般来说,如果含有中文字符,用 nchar/nvarchar,如果纯英文和数字,用 char/varchar
我把他们的区别概括成:
CHAR,NCHAR 定长,速度快,占空间大,需处理
VARCHAR,NVARCHAR,TEXT 不定长,空间小,速度慢,无需处理。
注意:操作系统的语言环境支持中文可以使用 char 和 varchar,如果操作系统环境不支持
中文,必须使用 nvarchar 和 ncahr。请协调好存储代价和兼容性之间的关系。
26.MD5 利用 salt 进行加密的过程程?
用户输入【账号】和【密码】(以及其他用户信息);
系统为用户生成【Salt 值】;
系统将【Salt 值】和【用户密码】连接到一起;
对连接后的值进行散列,得到【Hash 值】;
将【Hash 值 1】和【Salt 值】分别放到数据库中。
用户登录时,
用户输入【账号】和【密码】;
系统通过用户名找到与之对应的【Hash 值】和【Salt 值】;
系统将【Salt 值】和【用户输入的密码】连接到一起;
对连接后的值进行散列,得到【Hash 值 2】(注意是即时运算出来的值);
比较【Hash 值 1】和【Hash 值 2】是否相等,相等则表示密码正确,否则表示密码错误。
有时候,为了减轻开发压力,程序员会统一使用一个salt 值(储存在某个地方),而不是每
个用户都生成私有的 salt 值。
27.MD5 简介!