Git 弄乱了我的文件,在某些地方显示中文字符

2024-01-01

免责声明:我所说的 Git,是指“我”搞砸了。

Earlier, https://stackoverflow.com/questions/17248795/git-thinks-ini-saved-in-unicode-files-are-binary我想了git-gui向我展示diff为此它认为是二进制文件。

所以我对我的做了一些改变.\.gitattributes

*.ini       text
*.inc       text

但这没有用。 https://i.stack.imgur.com/YnmgL.png 然后我做了一些改变 https://stackoverflow.com/questions/4735663/why-does-git-treat-some-cpp-files-as-binary to my .\.git\info\attributes

*.ini       text
*.inc       text
*.inc crlf diff
*.ini crlf diff

它起作用了。

但现在当我回到以前的提交时,它就搞砸了......

chinese characters This is how it should look: english characters

并非所有文件中都会发生这种情况。EDIT:它仅发生在包含特殊字符的文件中。

问:这是提交本身的问题还是只是某些设置的问题?
问: 我可以康复吗?


您的 ini 文件以 UTF-16LE 格式保存,Windows 错误地将这种编码描述为“Unicode”。

Git 的默认比较工具不适用于 UTF-16,因为它不是 ASCII 兼容的编码。这就是 git 最初将文件检测为二进制的原因。

LF/CRLF 换行转换将每个 0x0A 字节视为换行,并将其替换为 0x0D-0x0A。但是,在 UTF-16LE 文件中,换行符实际上由 0x0A-0x00 表示,将其替换为 0x0D-0x0A-0x00 意味着您拥有奇数个字节,因此每个两字节代码单元的对齐下一行不同步。因此,所有其他线路都会被破坏。

您的选择是:

  1. 恢复属性更改并让 Git 将文件作为二进制处理(失去差异的好处)。

  2. 以 ASCII 兼容的编码保存文件。看来您的内容实际上没有任何非 ASCII 字符,所以希望这不是问题?通常您希望将所有文件保存为 UTF-8 - 这是 ASCII 兼容的,但也允许使用所有 Unicode 字符。但这取决于 Rainmeter 是否支持读取这样编码的 INI 文件(可能不支持)。

  3. 将 git 配置为使用不同的差异工具 https://stackoverflow.com/questions/777949/can-i-make-git-recognize-a-utf-16-file-as-text,尽管这会让其他人使用你的存储库变得更加复杂。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git 弄乱了我的文件,在某些地方显示中文字符 的相关文章

随机推荐

  • 如何检索局部变量?

    是否可以从我在 matlab 中运行的程序函数中检索局部变量 即我想从代码中检索一个变量 该变量未出现在输出中 提前致谢 下面描述了添加到函数本身以使变量在本地范围之外可用的代码 当您无法更改函数时 从外部当然无法更改范围 这是预期的 正确
  • 如何删除 Android 上的系统栏,我的意思是,所有

    我对 Android 编程还很陌生 几周前就开始了 Stackoverflow 这是我自 android 第一天以来最好的新油炸 第一次 我想真正寻求帮助 而不是在其他地方阅读它 主要是因为我无法在 任何地方 找到我的问题的答案 我正在使用
  • 为什么我们应该将模板包装在脚本块内?

    背景 所有 JS 模板引擎都建议将模板文本放入脚本块中 如下所示 但许多开发人员 可以理解 不喜欢这样做 因为他们在脚本块内的代码编辑器中失去了 HTML 语法突出显示 我见过这样的解决方法 在 text html 模板中保持正确的 HTM
  • MySqlCommand.LastInsertedId 如何工作?

    在我的一个项目中 我必须从数据库中获取最后插入的 ID 以便我可以将新插入的数据与内存中的数据同步 而无需执行SELECT FROM my db 查询 即我正在做一个SELECT FROM my db WHERE id new index
  • Mongoid 不同领域的相同嵌入文档类型

    我正在尝试添加嵌入文档 我知道这个语法是错误的 但它展示了我想要完成的任务 class Email include Mongoid Document embeds many recipients as to embeds many reci
  • java.io.FileNotFoundException:(不允许操作)在 mac osx (el Capitan) 上使用 ./keytool -import 时出错 - Java 6

    尝试将 CA 证书导入到我的 Java 6 信任库并遇到此错误 keytool v import trustcacerts alias Rapidssl file Users spurr Desktop rapidssl cer keyst
  • ajax调用成功后重新初始化Slick js

    我正在使用 Slick 进行轮播实现 并且在页面加载时一切正常 我想要实现的是 当我进行 Ajax 调用来检索新数据时 我仍然需要 slick 轮播实现 但此刻我失去了它 我已将对 slick 的调用放入函数中 function slick
  • Zend 中的 Flash Messenger 类型

    是否可能或我如何为 Zend 中的 FlashMessage 指定类型 例如 This is a Success message this gt helper gt FlashMessenger You are successfully c
  • flutter doctor - CocoaPods 已安装但无法工作

    使用 zsh 用于在 bash 中工作酿造医生 您的系统已准备好酿造 颤振医生给出了这个错误 Xcode develop for iOS and macOS Xcode 12 2 CocoaPods installed but not wo
  • 代码存储库最佳实践[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用标记、颜色和 lw 选项绘制多个数据框列

    虽然线图效果很好 但我正在寻找一种更有效的方法来编写此代码并缩短它 什么被认为是 最佳实践 新人正在做基础工作 我觉得我应该使用循环来分配所有 y 值 也许还有绘图 数据说明 1990 2018 年时间序列数据 包含大陆电力消耗 TWH f
  • 创建操作的自定义 POST 路由未启动

    解释上下文 puts I am learning Rails building a simple forum application puts I am pretty satisfied to where I got so far but
  • 初始化语法

    我喜欢 C 3初始化语法 https learn microsoft com en us dotnet csharp programming guide classes and structs how to initialize objec
  • 如何强制 float 和 int 有小数点或尾随零

    我正在尝试通过 RS232 与机器连接 并且机器要求所有输入都有小数点分隔符 否则它会采用小数点位置 例如 如果我发送25它将解释为0 025 but 25 000 or 25 将被正确接收为25 000 I tried Math Roun
  • 对于C++ sort(),如何将参数传递给自定义比较函数?

    我想使用标准排序函数根据与另一个点的距离 例如它们的重心 对点进行排序 我知道我可以编写一个自定义比较函数 但我不知道如何向它传递参数 我希望它是线程安全的 所以我不想将参数存储在一个中心位置 有没有办法将附加参数传递给自定义比较函数 He
  • JavaScript - XMLHttpRequest、访问控制允许来源错误

    我正在尝试将 XMLHttpRequest 发送到粘贴站点 我正在发送一个包含 api 所需的所有字段的对象 但我不断遇到此问题 我读过这个问题 我想 httpReq setRequestHeader Access Control Allo
  • 未找到方法定义...使用 Xcode 自动存根?

    在询问之前我不想放弃 因为这是任何 Java Net IDE 中的基本功能 编译器告诉我 Incomplete implementation of class Method definition for someMethod not fou
  • 在 kustomize 中选择性应用名称前缀/名称后缀

    目前我们正在使用 HOME bin kustomize edit set nameprefix prefix1 但它正在向我们的所有资源 例如 deployment yaml 和 service yaml 添加 nameprefix 我们只
  • 无法使用 C++ 连接到 PostgreSQL

    我正在尝试在我的 Mac 上运行 PostgreSQL PostgresQL 本身工作正常 我可以创建数据库和表之类的东西 但是当我尝试使用 C 连接到 PostgreSQL 时 如下所示 include
  • Git 弄乱了我的文件,在某些地方显示中文字符

    免责声明 我所说的 Git 是指 我 搞砸了 Earlier https stackoverflow com questions 17248795 git thinks ini saved in unicode files are bina