数据库中对于存储汉字和各种符号的字段应该定义为什么类型?

如果安装数据库服务的系统字符集发生变化的情况下,如何避免读取数据的乱码?
情况一:访问终端的字符集未变化
情况二:访问终端的字符集发生变化
请大侠说的详细点
使用什么类型?Nvarcha 和Varchar在字符集发生变化时,是否会乱码掉。

需要定义成字符型,一般可用char、varchar、nchar、nvarchar等,具体需要看实际需求。
这几种类型的比较:
CHAR
CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间。
VARCHAR
存储变长数据,但存储效率没有CHAR高,如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么"+1"呢?这一个字节用于保存实际使用了多大的长度。
从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。
NCHAR、NVARCHAR
这两种从名字上看比前面三种多了个"N"。和char、varchar比较起来,nchar、nvarchar最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。
所以一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-06
首先定义的字段类型跟显示乱不乱码没有关系
会出现乱码的原因无非是数据库服务器跟客户端机器的字符集不一样
所以在搭建一个数据库服务器时,应该要先设定好数据库服务器的字符集,通常会选用UTF8,客户端在开发的时候也要跟他们协商好,要使用数据库服务器可以识别的字符集,比如也用UTF8,这样就不会出现数据乱码的问题。
望采纳!追问

假如大家都可以协商,跟现有不能发生变化的服务器协商的话,该多好

追答

一般都是客户端遵循服务器的字符集..

本回答被提问者采纳
第2个回答  2013-05-22
Nvarchar,如果有特殊字符的话,会产生乱码.不知text类型会不会产生乱码,没有试过,你可以试一下,但(N)varchar会产生乱码地
第3个回答  2013-05-22
定义为字符串啊
第4个回答  2015-04-25
类型是varchar,然后编码还是 utf-8
相似回答