`
麻雀咖啡
  • 浏览: 20827 次
  • 性别: Icon_minigender_1
  • 来自: 福建
文章分类
社区版块
存档分类
最新评论

[转载]数据库中排字规则和乱码解决

阅读更多

   通过SSMS向SQL Server 2005中插入中文数据后,查询出来的结果是???,根本就不显示中文。用图形化和Insert语句后结果也是一样,使用查询分析器操作,情况也是如此。

  在排除了录入有误的情况外,剩下可以解释的就是朋友在SQLSERVER设置的排序规则有问题了。朋友在SQLSEVER2005中使用的排序规则是SQL_Latin1_General_CP1_CI_AS,而不是可以正确显示简体汉字的三种排序规则:
Chinese_PRC_BIN,
Chinese_PRC_CI_AS,
Chinese_PRC_CS_AS。
  让朋友在将SQLSERVER2005对应数据库中将排序规则改成Chinese_PRC_CI_AS,问题解决。

  看看MS对排序规则的解释:排序规则控制 SQL Server 2005 中的字符串物理存储。排  序规则指定表示每个字符的位模式以及存储和比较字符使用的规则。
       也就是说,在SQLSERVER中,排序规则实际上就是字符编码。(真不明白MS为什么又搞出个排序规则这个词?)

       在查询分析器内执行下面语句,可以得到SQL SERVER支持的所有排序规则。
    select * from ::fn_helpcollations()
        排序规则名称由两部份构成,前半部份是指本排序规则所支持的字符集。
        如:Chinese_PRC_CS_AI_WS
        前半部份:指UNICODE字符集,Chinese_PRC_指针对大陆简体字UNICODE的排序规则。
        排序规则的后半部份即后缀含义:
      _BIN 二进制排序
      _CI(CS) 是否区分大小写,CI不区分,CS区分
      _AI(AS) 是否区分重音,AI不区分,AS区分   
      _KI(KS) 是否区分假名类型,KI不区分,KS区分 
            _WI(WS) 是否区分宽度 WI不区分,WS区分 
         区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。
         区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项,比较还将重音不同的字母视为不等。
         区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。
         区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项.


理解了SQLSERVER中的排序规则后,对于上述问题,可以得出以下结论:
  一:修改SQLSERVER用户数据库为支持中文字符集的排序规则。
  二:对于存在汉字显示??,同时又不想更改数据库上的排序规则,又想要正确显示出汉字的话,建议在设计时全部使用Unicode类型字段,也就是那些以N开头的字段类型,比如nChar,nVarchar,才可以正确显示汉字。
  三:如果不想更改排序规则,又不想更改字段类型,那么就要更改SQL语句,对于所有的汉字,前面也要加上N才可以正确显示。具体的方法请参考下面两条语句:
   查询:select * from tb_Cust where FirstName=N'汪'
   插入:insert tb_Cust(FirstName,LastName,Sex) values(N'汪',N'鑫昊',N'男')

注:对于SQLSERVER2000以后,修改服务器级别的排序规则会比较麻烦,需要重建Master数据库,为安全以见,不建议直接修改服务器级别的排序规则!

原文出处:http://alligator.blog.51cto.com/36993/79970
分享到:
评论

相关推荐

    数据库的导入,中文成乱码,解决实例

    在本节中,我们将讨论数据库的导入问题,特别是中文成乱码的解决方案。数据库的导入是指将外部数据导入到数据库中,而中文成乱码是指在导入过程中汉字显示不正确的问题。下面我们将探讨这个问题的成因、解决方法和...

    Jdbc连接oracle远程数据库中文乱码解决

    综上所述,解决JDBC连接Oracle远程数据库时的中文乱码问题,需要从多个层面进行检查和配置,包括应用程序的配置文件、JDBC连接参数、数据库服务器设置以及开发环境等。通过细心排查和合理配置,可以有效地避免这类...

    vs自带数据库sql server的中文插入乱码问题、查找当前数据库名

    解决两个问题:vs自带数据库sql server的中文插入乱码问题、查找当前数据库名 (查找数据库名在文章中间,自己往下翻吧,不单拎出来了) vs自带数据库sql server的中文插入乱码问题: 如图所示,我插入表的中文变成...

    ORACLE数据库中文显示乱码问题的解决

    ORACLE数据库中文显示乱码问题的解决,系统中ORACLE数据库在安装后不能正确显示中文,而是显示为'???'等此类乱码。他人总结分析的内容,可以参考下。

    MySQL数据库系统中文乱码问题及解决方案.pdf

    通过这种方法,可以帮助开发者更好地解决数据库编程中的中文乱码问题,从而提高数据库系统的稳定性和可靠性。 1. 字符编码方式及应用 字符编码是为了方便文本在计算机存储并通过通信网络进行传递,把指定集合中某...

    数据库乱码解决方法

    在本文中,我们将深入探讨如何解决Oracle数据库中的乱码问题,并尝试将其理论应用扩展到其他类型的数据库系统。 首先,我们要了解数据库的字符编码。Oracle数据库支持多种字符集,如US7ASCII、WE8ISO8859P1、AL32...

    在DELPHI中使用MyDAC连接MySQL数据库时中文显示乱码的解决方法

    ### 在DELPHI中使用MyDAC连接MySQL数据库时中文显示乱码的解决方法 #### 背景介绍 在软件开发过程中,特别是涉及到多语言环境的应用程序开发时,字符编码问题常常成为开发者需要解决的一个重要问题。对于使用...

    sqlite数据库存取中文乱码的全部解决方案

    sqlite数据库存取中文乱码的全部解决方案(包括其它数据库oracle+sqlserver+mysql) 数据库的连接方式、数据库里存放数据的字体编码、所选编程语言的缺省字体编码。如果在编程中遇到不能正确显示中文时、、、、

    解决Mysql数据库在web开发中乱码问题

    本文将详细探讨如何解决MySQL数据库在Web开发中的乱码问题,确保数据在各个环节都能正确地显示和处理。 ### 一、理解字符集与乱码产生的原因 在深入解决方案之前,我们首先需要了解字符集的基本概念以及乱码产生的...

    解决MYSQL数据库乱码问题

    ### 解决MYSQL数据库乱码问题 #### 背景与问题描述 在使用Navicat连接MySQL数据库的过程中,用户可能会遇到一个常见的问题:乱码。这种情况通常发生在字符集设置不一致或者配置不当的情况下,尤其是在使用MySQL ...

    oracle数据库中文乱码问题解决方案.docx

    Oracle数据库中文乱码问题解决方案 Oracle数据库中文乱码...Oracle数据库中文乱码问题的解决方案需要同时修改数据库服务器端和客户端的字符编码设置。通过正确的设置,可以确保中文字符在Oracle数据库中的正确显示。

    Oracle数据库乱码问题

    本文将详细探讨Oracle数据库中使用US7ASCII字符集时出现的乱码问题及其解决方案。 #### 一、US7ASCII字符集概述 US7ASCII是一种单字节编码的字符集,它支持标准的ASCII字符集(包括数字、英文字母以及一些特殊符号...

    SQLITE数据库查询时中文乱码

    在使用SQLite数据库进行查询操作时,遇到中文乱码问题,通常是由于编码设置不正确或数据存储与读取过程中编码不一致导致的。SQLite本身支持多种字符编码,包括UTF-8、UTF-16等,但在实际应用中,如果没有正确配置,...

    解决数据库查询乱码的终极办法

    ### 解决数据库查询乱码的终极办法 #### 引言 在进行数据库操作时,特别是涉及到多语言环境下的数据处理时,字符集不匹配或设置不当可能会导致查询...希望这些方法能够帮助开发者们避免和解决数据库查询乱码的问题。

    SqlServer数据库中文乱码问题解决方法

    总之,解决SQL Server中的中文乱码问题需要关注数据库的排序规则设置,以及在数据传输和存储过程中保持编码的一致性。通过正确配置这些方面,可以确保中文数据在SQL Server环境中正常显示和处理。

    解决数据库乱码的方法

    有时候连接上数据库了,但是有乱码的情况,本文总结了一些解决数据库乱码的方法。

Global site tag (gtag.js) - Google Analytics