[英]Git messes up with non-ascii characters on Linux container
我有一个.Net Core(C#)项目,其中一个类包含以下内容:
var input = "£";
但是,当我在Docker容器( microsoft/dotnet:2.2-sdk
)中进行git克隆时,它会将其弄乱并显示为
(使用cat
在bash
中)。
当我运行它时,其Utf-8
字节为[239, 191, 189] = [EF, BF, BD]
Utf-8
[239, 191, 189] = [EF, BF, BD]
,这似乎是所谓的Unicode替换字符 。
我使用的Windows编辑器是VS 2017,但字符在其他Windows机器上正确显示并通过dotnet run/test
命令正确解析,因此我不认为这是无法正确保存字符的问题。
为什么我会看到这样的混乱以及如何解决它的任何想法?
一些细节
Encoding.UTF8.GetBytes("£");
获得字节 Windows 10
机器上完美运行 cat /etc/os-release
Linux版本Debian GNU/Linux 9 (stretch)
locale -a
返回C
C.UTF-8
POSIX
运行fgrep 'var input' file.cs | od -tx1 -c
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 " ;
您的文件包含一个单字节a3
,它对应于Windows-1252字符£
编码。 您的Linux系统显示
因为它不是有效的UTF-8编码。
您应该将Visual Studio配置为使用UTF-8而不是Windows-1252。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.