none
LocalDb中的乱码问题 RRS feed

  • 问题

  • 同一条T-SQL语句,在SQL Server和LocalDB中会有不同的结果,向NVARCHAR字段插入中文时,SQL Server中正常,而LocalDB中会乱码(显示???),我可以通过在INSERT语句的NVARCHAR字段值的前面添加N前缀来修复这个问题!


    我的问题是:
    由于我的T-SQL语句是由第三方库产生的,所以就不能通过添加N前缀的方式来解决,请问还有其他方式来解决LocalDB中的乱码问题吗?

    注:我使用的LocalDb是v11.0、排序规则:SQL_Latin1_General_CP1_CI_AS。

    再问:LocalDb中如何修改排序规则?

    • 已编辑 H. H. Pern 2013年12月21日 1:18 补充
    2013年12月21日 1:10

答案

  • 同一条T-SQL语句,在SQL Server和LocalDB中会有不同的结果,向NVARCHAR字段插入中文时,SQL Server中正常,而LocalDB中会乱码(显示???),我可以通过在INSERT语句的NVARCHAR字段值的前面添加N前缀来修复这个问题!


    我的问题是:
    由于我的T-SQL语句是由第三方库产生的,所以就不能通过添加N前缀的方式来解决,请问还有其他方式来解决LocalDB中的乱码问题吗?

    注:我使用的LocalDb是v11.0、排序规则:SQL_Latin1_General_CP1_CI_AS。

    再问:LocalDb中如何修改排序规则?

     To change server collation, you have to rebuild master with collation you like to use.
    • 已标记为答案 H. H. Pern 2013年12月22日 2:20
    2013年12月21日 3:55

全部回复

  • 这里有一篇帖子,不知道能不能帮到LZ

    http://bbs.csdn.net/topics/390624121?page=1

    2013年12月21日 1:41
  • NVARCHAR添加N前缀才是正确的写法,如果不使用前缀N的话,SQL Server不会认为是插入Unicode数据类型。我猜你的SQL Server的排序规则应该是中文的,而且WINDOWS支持中文,所以可以正常显示。而LocalDB的排序规则不是中文,所以就乱码了。

    为什么使用N前缀: Note  The SQL Server Unicode data types are based on the National Character data types in the SQL-92 standard. SQL-92 uses the prefix character n to identify these data types and values.

    来自:Unicode Data


    Please Mark As Answer if it is helpful.


    2013年12月21日 3:13
  • 同一条T-SQL语句,在SQL Server和LocalDB中会有不同的结果,向NVARCHAR字段插入中文时,SQL Server中正常,而LocalDB中会乱码(显示???),我可以通过在INSERT语句的NVARCHAR字段值的前面添加N前缀来修复这个问题!


    我的问题是:
    由于我的T-SQL语句是由第三方库产生的,所以就不能通过添加N前缀的方式来解决,请问还有其他方式来解决LocalDB中的乱码问题吗?

    注:我使用的LocalDb是v11.0、排序规则:SQL_Latin1_General_CP1_CI_AS。

    再问:LocalDb中如何修改排序规则?

     To change server collation, you have to rebuild master with collation you like to use.
    • 已标记为答案 H. H. Pern 2013年12月22日 2:20
    2013年12月21日 3:55