[英]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.