Git在Linux容器上与非ascii字符混淆
我有一个.Net核心(C#)项目,其中一个类中有以下行:Git在Linux容器上与非ascii字符混淆,linux,git,character-encoding,Linux,Git,Character Encoding,我有一个.Net核心(C#)项目,其中一个类中有以下行: var输入=” 但是,当我在Docker容器中进行git克隆时(microsoft/dotnet:2.2-sdk),它会把它搞砸并显示为�(在bash中使用cat) 当我运行它时,它的Utf-8字节是[2391189]=[EF,BF,BD],这似乎是所谓的 我使用的Windows编辑器是VS 2017,但字符在其他Windows计算机上正确显示,并通过dotnet run/test命令正确解析,因此我认为这不是错误保存字符的问题 你知道我
var输入=”代码>
但是,当我在Docker容器中进行git克隆时(microsoft/dotnet:2.2-sdk
),它会把它搞砸并显示为�代码>(在bash
中使用cat
)
当我运行它时,它的Utf-8
字节是[2391189]=[EF,BF,BD]
,这似乎是所谓的
我使用的Windows编辑器是VS 2017,但字符在其他Windows计算机上正确显示,并通过dotnet run/test
命令正确解析,因此我认为这不是错误保存字符的问题
你知道我为什么会看到如此混乱的局面以及如何解决吗
一些细节
- 我使用
Encoding.UTF8.GetBytes(“£”)获取字节代码>
- 它在
windows10
机器上运行良好
- Linux版本
Debian GNU/Linux 9(stretch)
来自cat/etc/os发行版
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 " ;
您的文件包含一个单字节a3
,它对应于字符
的Windows-1252编码。您的Linux系统显示�代码>因为它不是有效的UTF-8编码
您应该将Visual Studio配置为使用UTF-8而不是Windows-1252。在Windows上的编辑器(或IDE项目)中使用哪种字符编码?Linux上使用哪种语言环境?…全局和项目的Git配置文件/设置是什么。你用过Git钩子吗?@Bodo Windows上的编辑器是Visual Studio。但在另一台windows笔记本电脑上克隆时,它工作正常,因此我认为问题不在windows上end@bodolocale-a
显示C.UTF-8 POSIX
@eddyP23请您的问题添加所有请求的信息,而不是在注释中回答。可能Windows和Linux使用不同的编码。在Linux上,请运行fgrep'var input'yourfile | od-tx1-c
。在Windows上,当您在记事本++中打开文件时,可以尝试找出文件的编码。记事本++中显示的字符正确吗?“编码”菜单中选择了什么?如果字符显示不正确,请尝试其他编码。