Слетает кириллица gRPC .NET 5.0?
Бэк gRPC , фронт Blazor , .NET 5.0
При запуске в винде и виндовом докере все нормально. Когда разворачиваю в докере на VPS (ubuntu) то на самой странице текст русский, а вот то что приходит из gRPC становится �����.
Понятное дело что беда с кодировкой, но я не понимаю, что именно не так уже кончились идеи.
locale в ubuntu
LANG=ru_RU.UTF-8
LANGUAGE=
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=
locale в докере
# locale
LANG=ru_RU.UTF-8
LANGUAGE=ru_RU:ru
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=ru_RU.UTF-8
Сначала думал что проблема при сериализации, но дефолтный HelloRequest ведет себя так же. У кого то было такое?
Ради интереса развернул minimal APIs .NET6 в докере - эффект тот же. Русский текст в ответе становится ���� . На Win11 все нормально текст русский.
Еще кстати если gRPC юзать как обычное api и добавить в endpoints.MapGet такую строку context.Response.ContentType = "text/html;charset=utf-8"; то он возвращает из vps на русском без вопросиков. Но если юзать запросы через stream - не нашел где можно это указать
Беру данные так
using var serverStream = GreeterClient.SayHelloAsync(new HelloRequest());
var stream = await serverStream.ResponseAsync;
var result = stream.Message;
Ответы (1 шт):
Это смешно, но файл действительно был закодирован в кодировке 1251. В моем проекте Blazor WebAssembly файлы *.razor UTF8, но файлы gRPC - 1251, теперь понятно, почему это происходит... Но непонятно, почему VS создает файлы в разных кодировках.
Используя notepad++, я сделал его utf8, и все сработало.
Чтобы исправить это для новых файлов, мне пришлось сделать этот параметр Tools > Options > Environment > Documents > Save documents as Unicode