SQL数据库对于保存特殊字符的解决办法
的Char、Vachar类型可以兼容汉字,但特殊字符不⾏,在保存包含有特殊字符的字符串、正⽂时,会将特殊符号替换成⼀个”?”号。
例如: “基础教育课程⼿机报•特刊” == 》 “基础教育课程⼿机报?特刊”
解决办法是将字段改成NChar,NVarchar等类型,在⼊库的时候每个字符串插⼊前都加⼊⼀个N,如N’lily’、N’Male’,兼容性会更好,作为Nvarchar字段,这是⼀种推荐做法!
⼩贴⼠:
char类型:对英⽂(ASCII)字符占⽤1个字节,对⼀个汉字占⽤2个字节,CHAR存储定长数据很⽅便,CHAR字段上的索引效率级⾼,⽐如
定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间。因为是固定长度,所以速度效率⾼。
Varchar类型:Varchar 的类型不以空格填满,⽐如varchar(100),但它的值只是”qian”,则它的值就是”qian” ⽽char 不⼀样,⽐如char(100),它的值是”qian”,⽽实际上它在数据库中是”qian “(qian后共有96个空格,就是把它填满为100个字节)。
由于char是以固定长度的,所以它的速度会⽐varchar快得多!但程序处理起来要⿇烦⼀点,要⽤trim之类的函数把两边的空格去掉! VARCHAR存储变长数据,但存储效率没有CHAR⾼。如果⼀个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定
义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这⼀个字节⽤于保存实际使⽤了多⼤的长度。
Nchar类型和Nvarchar类型是怎么⼀回事呢?为了与其他多种字符的转换,如中⽂,⾳标等,对每个英⽂(ASCII)字符都占⽤2个字节,对⼀个汉字也占⽤两个字节,所有的字符都占⽤2个字节。
例如:
varchar(n):变长型字符数据类型,存储最长长度为8,000 个字符。
varchar2最大长度举个例⼦: insert a select ‘⽊⼦a’ — 存储长度为5个字节,余下的3个字节全部释放 insert a select ‘⽊神易 —-存储长度为6个字节,余下的2个字节全部释放 —意思是varchar变长字符数据类型与存储数据的实际长度是⼀致的
nvarchar(n):可变长度 Unicode 数据,其最⼤长度为 4,000 字符。字节的存储⼤⼩是所输⼊字符个数的两倍,就是说它是双字节来存储数据的。如果存储数据如果存在单字节时,它也是以双字节来占⽤存储
空间的。
varchar⼀般适⽤于英⽂和数字,Nvarchar适⽤中⽂和其他字符,其中N表⽰Unicode常量,可以解决多语⾔字符集之间的转换问题
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论