代码之家  ›  专栏  ›  技术社区  ›  Frank V

存储在SQL Server中的法语文本出现错误,如何使其正确显示

  •  2
  • Frank V  · 技术社区  · 16 年前

    我有一张由以下结构组成的桌子。

     CREATE TABLE [dbo].[tblData](
        [ID] [numeric](18, 0) NOT NULL,
        [QID] [varchar](25) NOT NULL,
        [Data] [nvarchar](255) NULL,
      CONSTRAINT [PK_tblData] PRIMARY KEY CLUSTERED 
       (
          [ID] ASC,
          [QID] ASC
       )
     ) ON [PRIMARY]
    

    在上面的示例中,列[数据]内部混合了不同的语言。我们通过设置适当代码页的网站收集这些数据。我了解插入到我们表中的数据是收集数据时网页上的代码页设置为的任何内容。我们把这些信息存储在别处。

    我们使用的每一种语言都很好。例如,中国人出来,按我们需要的方式显示。我们正在尝试将此数据转储到Unicode文本文件。具体来说:“ucs-2le”只有一种语言没有出现,那就是法语。出于某种原因,通常重音的字符出现了完全错误。我发现数据(我希望)似乎被“存储”为错误的字符。

    一位同事认为表中的数据可能是正确的,我们只需要将其转换为正确的字符集或代码页,以便在将数据放入UCS-2le文本文件之前正确显示数据。

    有人能对我的问题提供任何见解吗? 谢谢您!

    更新 我发现: http://windowsitpro.com/windowsstorage/Article/ArticleID/14045/windowsstorage_14045.html -这基本上是说我需要做的事不能做吗?我想我想做的是略有不同,但这是因为希望是错误的。

    1 回复  |  直到 16 年前
        1
  •  1
  •   John Sansom    16 年前

    你的同事是对的。由于数据以Unicode数据类型存储,因此应保留本机语言格式。

    需要做的是,当您选择数据时,您希望确保为执行请求的用户(即他们的区域设置)使用适当的排序规则。

    有关在SQL Server中使用排序规则,请参阅以下联机参考书

    http://msdn.microsoft.com/en-us/library/ms144260(SQL.90).aspx

    希望这有帮助。干杯。