Я создал веб-приложение ASP.NET Core 8.0 MVC. У меня есть файл конфигурации языка для таких таблиц данных:
var tr_lang = {
"emptyTable": "Tabloda herhangi bir veri mevcut değil",
"info": "_TOTAL_ kayıttan _START_ - _END_ arasındaki kayıtlar gösteriliyor",
...
}
На стороне клиента и в инструментах разработчика я вижу этот файл, как показано ниже.
var tr_lang = {
"emptyTable": "Tabloda herhangi bir veri mevcut de�il",
"info": "_TOTAL_ kay�ttan _START_ - _END_ aras�ndaki kay�tlar g�steriliyor",
}
И в одном из моих файлов сценариев есть такая строка.
console.info("Parametre Kategori kayıt");
На стороне клиента я вижу результат как
Parametre Kategori kay�t
Существует проблема с кодировкой турецких символов. Как я могу это решить?
P.S. : Сообщество Microsoft Visual Studio 2022 (64-разрядная версия) — текущая версия Версия 17.9.6
Я пытаюсь понять проблему, если я использую console.info("Kayıt") в файле .cshtml (View) непосредственно между тегами <script>, проблем нет. Но если я использую этот внешний файл .js и импортирую его в @section Scripts {<script ...>}, я получаю ошибку с турецкими символами.
К сожалению, это не связано со шрифтом. Я попытался написать те же слова в том же семействе шрифтов напрямую в cshtml, проблем не возникло. Файлы .js не имеют проблем в среде разработки. Но если я доберусь до этого файла из консоли разработчика > Источники > testFile.js, символы там также будут повреждены. Я думаю, проблема начинается на стороне сервера. Я впервые использую платформу .net 8.0. Раньше я не сталкивался с этой проблемой в предыдущих фреймворках.
Но, возможно, проблема связана с самой Visual Studio, а не с ядром .net, сейчас я рассматриваю такую возможность.
@ BK52 проблема в том, что файл не был сохранен в формате UTF8. Речь идет не о шрифтах, а о том, как был сохранен сам файл. Когда вы видите �, это всегда означает, что текст был сохранен с использованием неправильной кодовой страницы. Символ � называется символом замены и используется, когда невозможно записать или прочитать символ с кодовой страницей, отличной от Unicode.





Я решил проблему.
Проблема была в самой Visual Studio, а не в ASP.NET Core 8.0. Выберите параметр «Кодирование» в «Дополнительные параметры сохранения» в меню «Файл».
Я перевел его на турецкий (Windows) - Кодовая страница 1254 -> Юникод (UTF-8 с подписью) - Кодовая страница 65001.
Если вы не видите опцию «Дополнительные параметры сохранения» в меню «Файл», взгляните на это.
Вот что сказал Дай в первом комментарии. Символ � всегда появляется, когда используется неправильная страница, не поддерживающая Юникод.
Вероятно, вам следует проверить: Какова кодировка исходных файлов по умолчанию в Visual Studio 2017? . Файлы кода должны автоматически сохраняться в формате UTF8. Вы также можете установить кодировку по умолчанию через файл .editorconfig
@PanagiotisKanavos спасибо за интерес. Я думал, что проблема вызвана новым фреймворком, но позже понял, что версия редактора тоже обновилась. Затем я решил свою проблему, выполнив действия, описанные выше.
У вас возникнет такая же проблема с любым текстовым редактором, если вы сохраните файл с неправильной кодировкой. Речь идет не о «новой» версии VS. Раньше VS всегда хранил исходные файлы в локальной кодировке. Это более новые версии, которые автоматически сохраняются в UTF8. Вы не должны были столкнуться с этой проблемой, если только не возникла ошибка или файл не был скопирован из другого или более старого проекта, в котором вместо UTF8 использовалось 1254.
Убедитесь, что все ваши файлы сохранены в формате UTF-8. Это не имеет ничего общего с ASP.NET Core, если ваши JS-файлы каким-то образом не перекодируются ASP.NET Core?