簡體   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