Вставка японских символов в базу данных SQL Server - PullRequest
0 голосов
/ 18 октября 2018

У меня проблема в том, что когда я пытаюсь вставить японское слово в свою базу данных.Он вставляет их, но когда я проверяю слово, это выглядит так: «??????»

Итак, я исследовал в stackoverflow и перепробовал много решений, но не смог, и у меня все еще остается та же проблема.Вот мой код, если кто-то может помочь:

Вот слово, которое я ввожу в текстовое поле:

ケンガンアシュラ

База данных показывает его как:

????????????

Модель:

 [Display(Name = "Alternative Name")]
 [StringLength(200)]
 public string Alternative_Name { get; set; }

На сервере SQL он имеет тип данных

nvarchar(200)

Вот мое мнение:

<div class="form-group">
    <h4>@Html.LabelFor(model => model.Alternative_Name, new { @class = "control-label col-md-3" })</h4>
    <div class="col-md-6">
        @Html.EditorFor(model => model.Alternative_Name, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.Alternative_Name, "", new { @class = "text-danger" })
    </div>
</div>

Я пытался обновить его с помощью миграции и изменилUnicode в true:

  AlterColumn("dbo.Post", "Alternative_Name", c => c.String(maxLength: 200, unicode: true));

Но ничего не работает, база данных продолжает отображать его как ?????.

ОБНОВЛЕНИЕ : В моем случае решение просто в моделикласс конструктора или модели, который объясняет отношения между таблицами и атрибутами, для Unicode было установлено значение false, поэтому я изменил его на true и решил:

 modelBuilder.Entity<Post>()
            .Property(e => e.Alternative_Name)
            .IsUnicode(true);

Ответы [ 3 ]

0 голосов
/ 18 октября 2018

Строка в .Net по умолчанию является юникодом, который должен передавать японский язык в БД как NVarchar

. Использовать аннотации данных в вашей модели, чтобы сообщить .net, какой тип использует Column (TypeName = "NVarchar").]

Column(TypeName ="NVarchar")]
[Display(Name = "Alternative Name")]
 [StringLength(200)]
 public string Alternative_Name { get; set; }
0 голосов
/ 19 октября 2018

В базе данных SQL Server вы должны находиться в столбце, в который хотите вставить данные, в его наборе типа NVARCHAR (3000).

0 голосов
/ 18 октября 2018

Столбец должен быть в nvarchar

create table yourTableName(yourColumnName nvarchar(50));

INSERT INTO yourTableName(yourColumnName) VALUES(N'ケンガンアシュラ');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...