Существует два способа представления символа å
:
Использование кодовой точки Unicode U + 00E5 ( латинская строчная буква A с кольцом над ).
Используя комбинацию двух кодовых точек U + 0061 ( латинская строчная буква A ) и U + 030A ( комбинированное кольцо над ).
Визуально их невозможно различить.И это не относится к HTML, который может представлять обе версии - либо напрямую (с использованием UTF-8, UTF-16) или с использованием экранированной версии (например, ̊
).
В вашем случае используется второй способ представления å
.
Для управления этой неоднозначностью Unicode имеет четыре формы нормализации : C , D , KC и KD .
Нормализация Unicode также поддерживается C #, более конкретно String.Normalize .
Таким образом, чтобы избавиться от предупреждения, нормализуйте title :
[Route("~/file/{id}")]
public async Task<IActionResult> File(int id)
{
FileViewModel m = await LoadFileAsync(id).ConfigureAwait(false);
m.Title = m.Title.Normalize(NormalizationForm.FormC);
return View(m);
}
В долгосрочной перспективе, вероятно, лучше нормализовать все строки перед сохранением их вбаза данных.Если один и тот же текст может быть представлен различными последовательностями кодовых точек, это также вызовет проблемы в запросах к базе данных.И большинство баз данных не могут нормализовать строки.