none
varchar 类型的问题 RRS feed

  • 问题

  •  

          大家好:我表中有一个字段 MESSAGE  类型为 varchar(400)  但是我存数据 怎么存进去的都是乱码呢>存的是汉字; 实在搞不明白,以前的都没问题:请大家帮帮忙,等待中..........................
    2008年12月25日 8:10

答案

  •  小吴 写:

     

      第一个命令             EXPR1                        第二个命令              EXPR1

     

               Chinese_PRC_CI_AS                                                       NULL

    第2个语句,那里要改成你的数据库名字,你不是直接就运行了吧?

     

    怀疑你的数据库被修改为非中文的排序规则,如果是这样的,话,你必须把表字段类型设置为UNICODE的类型,

    也就是varchar调整为nvarchar,而且插入数据的时候,要使用"N",比如:

     

    INSERT XXX(COLUMN,....) VALUES(N'中文字符')

    2008年12月25日 9:31
    版主

全部回复

  •  

    alter database cofeidb collate Chinese_PRC_CI_AS

    create table tbkang(name nvarchar(20))

    go

    insert into tbkang values('康')

    select Name from tbkang

    go

    -------------------------------------

    Name

    2008年12月25日 8:38
  •  

    varchar 为什么不行呢? 它只能存字符吗?
    2008年12月25日 8:57
  •  

    Code Snippet

    SELECT SERVERPROPERTY('Collation')
    SELECT DATABASEPROPERTYEX('你的数据库名','Collation')

     

     

    运行上面的语句,把结果贴上来.
    2008年12月25日 9:00
    版主
  •  

      第一个命令             EXPR1                        第二个命令              EXPR1

     

               Chinese_PRC_CI_AS                                                       NULL

    2008年12月25日 9:16
  •  

    也可以,但是强烈建议用nvarchar
    2008年12月25日 9:25
  • 不是吧,你的数据库的Collation 怎么能是空呢?

     小吴 写:

     

      第一个命令             EXPR1                        第二个命令              EXPR1

     

               Chinese_PRC_CI_AS                                                       NULL

     

    2008年12月25日 9:30
  •  

    null     意思是   数据库没有启动, varchar 类型不可用吗?
    2008年12月25日 9:31
  •  小吴 写:

     

      第一个命令             EXPR1                        第二个命令              EXPR1

     

               Chinese_PRC_CI_AS                                                       NULL

    第2个语句,那里要改成你的数据库名字,你不是直接就运行了吧?

     

    怀疑你的数据库被修改为非中文的排序规则,如果是这样的,话,你必须把表字段类型设置为UNICODE的类型,

    也就是varchar调整为nvarchar,而且插入数据的时候,要使用"N",比如:

     

    INSERT XXX(COLUMN,....) VALUES(N'中文字符')

    2008年12月25日 9:31
    版主
  •  

    SELECT DATABASEPROPERTYEX(' web ,'Collation' ) 运行的结果是 null  ;
    2008年12月25日 9:36
  •  小吴 写:

     

    SELECT DATABASEPROPERTYEX(' web ,'Collation' ) 运行的结果是 null  ;

     

    那你先保证你的这个数据库可以访问再查查看排序规则是不是不是中文的,理解下我刚才说的那个意思,你自己测试一下就知道了,就简单的在库里建立一个表,VARCHAR类型字段,插入一个简单的中文进去,看看是不是乱码.

    2008年12月25日 9:40
    版主
  • You can only store single byte character in varchar column, it doesn't support unicode. That's why need nvarchar, it stores two-byte character (unicode data).

     

    2008年12月25日 20:53