mysql没有用过.不过, 对于mssql而言, 排序规则不决定字符集, 字段的类型才决定字符集.
排序规则决定的是数据的顺序,是否区分大小写等等.
mssql有两种编码, 一种是unicode, 对应的类型是nchar/nvarchar/ntext, 它使用unicode编码, 可以保存多国文字而不会有乱码.
另一种是varchar/char/text这类的非unicode编码字段, 它使用的编码由客户端传递过来的代码页确定. 在这种类型的字段中, 无论你怎么设置排序规则, 同一台客户端(或者是同类系统的客户端)传进来的编码的解析不会是乱码, 便在另一系统下, 有可能代码页转换会出错, 就会出现乱码.

解决方案 »

  1.   

    当然, 对于ms sql而言, 使用unicode类型的字段时, 传递字符常量时要注意N的问题. 即要使用类似下面的方式传递数据:insert tb values(N'中文')
      

  2.   

    如果mysql默认字符集是 latin1_swedish_ci ,而除了注册,其他的中文存储和显示都没问题的话,就要看注册这块网页代码怎么写的,肯定要做代码转换,是不是没有加上代码转换?
      

  3.   

    现在的问题只是那个网站不许用中文注册用户我想, 这个问题不应该从数据库上解析. 你可以自己执行一条插放中文用户的sql语句看看, 应该数据库能正常保存的.
      

  4.   

    改变了数据库的字符集怎么可能导致登陆页面也变乱码?说明其他的中文信息也是从库中读取的,如果不做转换,中文肯定不能存进库里。mysql的老问题了。不要从数据库中找原因了