У меня есть проект .Net Core (C #) со следующей строкой в одном из классов:
var input = "£";
Но когда я делаю git-клон в контейнере Docker (microsoft/dotnet:2.2-sdk
), он портит его и отображает как �
(в bash
, используя cat
).
И когда я запускаю его, его Utf-8
байтов равны [239, 191, 189] = [EF, BF, BD]
, которые кажутся так называемыми символом замены Unicode .
Редактором Windows, который я использую, является VS 2017, но символ правильно отображается на других компьютерах с Windows и правильно анализируется командой dotnet run/test
, поэтому я не думаю, что это проблема неправильного сохранения символа.
Есть идеи, почему я вижу такой беспорядок и как его решить?
Некоторые подробности
- Я получаю байты, используя
Encoding.UTF8.GetBytes("£");
- Отлично работает на
Windows 10
машине
- версия Linux
Debian GNU/Linux 9 (stretch)
из cat /etc/os-release
locale -a
возвращает C
C.UTF-8
POSIX
- В Windows Notepad ++ при открытии он называется ANSI и отображается правильно.
Бег fgrep 'var input' file.cs | od -tx1 -c
0000100 76 61 72 20 69 6e 70 75 74 20 3d 20 22 a3 22 3b
v a r i n p u t = " 243 " ;