C# Localdb将中文字符显示为问号

C# Localdb将中文字符显示为问号,c#,localdb,C#,Localdb,例如,我有一个包含以下内容的表: CREATE TABLE [dbo].[PrimaryCategory] ( [Id] INT IDENTITY(1, 1) NOT NULL, [Title] NVARCHAR(250) NOT NULL, PRIMARY KEY CLUSTERED ([Id] ASC) ); 我在表中插入了一些数据 using (var ctx = new DatabaseEntities()) { List<Primary

例如,我有一个包含以下内容的表:

CREATE TABLE [dbo].[PrimaryCategory] 
(
    [Id]    INT IDENTITY(1, 1) NOT NULL,
    [Title] NVARCHAR(250) NOT NULL,

    PRIMARY KEY CLUSTERED ([Id] ASC)
);
我在表中插入了一些数据

using (var ctx = new DatabaseEntities())
{
    List<PrimaryCategory> categories = new List<PrimaryCategory>()
    {
        new PrimaryCategory() { Title = "政策理论" },
        new PrimaryCategory() { Title = "佛学讲记" },
        new PrimaryCategory() { Title = "佛学禅定" },
        new PrimaryCategory() { Title = "佛教心理学" },
        new PrimaryCategory() { Title = "人物介绍" },
        new PrimaryCategory() { Title = "幽默格言" },
        new PrimaryCategory() { Title = "文学" },
        new PrimaryCategory() { Title = "动态报道" },
        new PrimaryCategory() { Title = "介绍佛陀" },
        new PrimaryCategory() { Title = "介绍佛教" },
        new PrimaryCategory() { Title = "佛教故事" },
        new PrimaryCategory() { Title = "生活的教育" },
        new PrimaryCategory() { Title = "海内外佛教" }

    };
    ctx.PrimaryCategory.AddRange(categories);
    ctx.SaveChanges();
};
使用(var ctx=new DatabaseEntities())
{
列表类别=新列表()
{
新建PrimaryCategory(){Title=”政策理论" },
新建PrimaryCategory(){Title=”佛学讲记" },
新建PrimaryCategory(){Title=”佛学禅定" },
新建PrimaryCategory(){Title=”佛教心理学" },
新建PrimaryCategory(){Title=”人物介绍" },
新建PrimaryCategory(){Title=”幽默格言" },
新建PrimaryCategory(){Title=”文学" },
新建PrimaryCategory(){Title=”动态报道" },
新建PrimaryCategory(){Title=”介绍佛陀" },
新建PrimaryCategory(){Title=”介绍佛教" },
新建PrimaryCategory(){Title=”佛教故事" },
新建PrimaryCategory(){Title=”生活的教育" },
新建PrimaryCategory(){Title=”海内外佛教" }
};
ctx.PrimaryCategory.AddRange(类别);
ctx.SaveChanges();
};
但是它在datagridview中显示
,如果您在datagridview中更改数据,则
将再次:

1)检查您在DB中的编码。如果在DB属性Title=???中,则在DB use中更改编码

ALTER DATABASE [YOURDATABASE] COLLATE SQL_Latin1_General_CP1_CS_AS

2) 如果在DB中显示正常标题,则在使用编码将PrimaryCategory类转换为Unicode时,更改编码。使用以下sql转换以更改排序:

alter database "C:\Users\Administrator\Source\Repos\PutixinEditor\PutixinEditor\Database.mdf" set single_user with rollback immediate ; 
go

alter database "C:\Users\Administrator\Source\Repos\PutixinEditor\PutixinEditor\Database.mdf" collate Chinese_PRC_CI_AS ; 
go

alter database "C:\Users\Administrator\Source\Repos\PutixinEditor\PutixinEditor\Database.mdf" set multi_user;


但是为什么Visual Studio不为arvhice提供选择下拉列表?

数据库使用什么字符编码?@Enigmativity:SQL Server对任何
NVARCHAR
数据类型列使用UCS-2(大致相当于UTF-16-通常每个字符2个字节)@Enigmativity LocalDB的实例排序规则设置为SQL\u Latin1\u General\u CP1\u CI\u AS,无法更改。通常支持数据库级、列级和表达式级排序规则。@Tangmank-显示如何查询数据库的
PrimaryCategoryForm
的代码在哪里?@Enigmativity我正在使用datasource拖放默认情况下,校对为
SQL\u Latin1\u General\u CP1\u CI\u AS
。请尝试校对中文、简体、拼音或简体笔划或顺序。如果这没有帮助,请在保存到数据库之前尝试编码为unicode