Search code examples
sql-serverutf-8nvarchar

Loss of accents when inserting some UTF8 data into nvarchar


Create table:

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[StringsTest](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Value] [nvarchar](max) NOT NULL,
PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

SET ANSI_PADDING ON
GO

Insert data (Latvian):

INSERT INTO [dbo].[StringsTest]
           ([Value])
     VALUES
           ('TĀDS KĀDU JŪS')
GO

Select:

SELECT * FROM [dbo].[StringsTest]

Results have lost accents:

Id          Value
1           TADS KADU JUS

Solution

  • Use an N before your Unicode string to mark it as such.

     INSERT [dbo].[StringsTest]
           ([Value])
     VALUES
           (N'TĀDS KĀDU JŪS')