繁体   English   中英

Git在Linux容器上弄乱了非ASCII字符

[英]Git messes up with non-ascii characters on Linux container

我有一个.Net Core(C#)项目,其中一个类包含以下内容:

var input = "£";

但是,当我在Docker容器( microsoft/dotnet:2.2-sdk )中进行git克隆时,它会将其弄乱并显示为 (使用catbash中)。

当我运行它时,其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
  • 在Windows Notepad ++上,当打开时,它声称是ANSI,并且正确显示。

运行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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM