varchar 保存英文中文区别。
varchar在SQL Server中是采用單字節(jié)來存儲(chǔ)數(shù)據(jù)的,中文字符存儲(chǔ)到SQL Server中會(huì)保存為兩個(gè)字節(jié),英文字符保存到數(shù)據(jù)庫中,如果字段的類型為varchar,則只會(huì)占用一個(gè)字節(jié),而如果字段的類型為nvarchar,則會(huì)占用兩個(gè)字節(jié)。 varchar(40),能存儲(chǔ)40個(gè)字節(jié)長(zhǎng)度的字符,存儲(chǔ)中文字符的時(shí)候,因?yàn)橹形淖址?個(gè)字符就等于2個(gè)字節(jié),所以varchar(40)只能存儲(chǔ)20個(gè)中文字符。nvarchar(40),就可以存儲(chǔ)40個(gè)中文字符,也就是說可以存儲(chǔ)80個(gè)字節(jié)長(zhǎng)度的字符。nvarchar要相對(duì)于存儲(chǔ)的字符類型.
正常情況下,我們使用varchar也可以存儲(chǔ)中文字符,但是如果遇到操作系統(tǒng)是英文操作系統(tǒng)并且對(duì)中文字體的支持不全面時(shí), 在SQL Server存儲(chǔ)中文字符為varchar就會(huì)出現(xiàn)亂碼(顯示為??).而且正常情況下,主機(jī)都會(huì)支持中文的環(huán)境,所以如果使用varchar來存儲(chǔ)數(shù)據(jù),在開發(fā)階段是發(fā)現(xiàn)不了的.多數(shù)情況下,在布署的時(shí)候也不會(huì)有問題.但是!如果布署的主機(jī)是英文操作系統(tǒng),并且不支持中文環(huán)境,那問題就出來了.所有的varchar字段在存儲(chǔ)中文的時(shí)候都會(huì)變成亂碼(顯示為??).而且一般情況下你不會(huì)知道這是因?yàn)槟悴捎昧隋e(cuò)誤的數(shù)據(jù)類型來存儲(chǔ)所造成的,你會(huì)試著去裝中文字體,試著去設(shè)置操作系統(tǒng)的語言環(huán)境...這些都不能解決問題,唯一能解決問題的是把數(shù)據(jù)庫字段的類型個(gè)性為nvarchar(或者nchar).對(duì)項(xiàng)目管理比較熟悉的朋友應(yīng)該都知道,到布署階段再來修改數(shù)據(jù)庫是一個(gè)很恐怖的事情.
轉(zhuǎn)載于:https://www.cnblogs.com/suncan0/p/4738255.html
總結(jié)
以上是生活随笔為你收集整理的varchar 保存英文中文区别。的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下的二进制文件的编辑和查看 -
- 下一篇: laravel controller