Windows 10 CLI 终端中的“git log”输出编码问题

2024-01-21

Problem

我怎样才能使git log命令输出是否正确显示在 Windows CLI 终端中?

Example

正如您所看到的,我可以正确输入变音字符,但是git log,输出以某种方式被转义。根据UTF-8编码表 http://www.utf8-chartable.de/unicode-utf8-table.pl?start=256,尖括号之间的代码(< and >) 输出中对应于之前输入的内容git config参数。

我尝试过设置LESSCHARSET环境变量为utf-8如建议的类似问题的答案之一 https://stackoverflow.com/a/19436421/2443502,但是输出是乱码:

I know .git/config使用 UTF-8 正确编码,因为它是由gitk正如预期的那样。

这里是locale如有必要,命令输出:

LANG=
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_ALL=

纯的输出也是一样的Git Bash https://superuser.com/questions/1053633/what-is-git-bash-for-windows-anyway:

所以我相信这个问题与 shell 无关并且与 Git 或其配置本身有关。


好的,我尝试了一下,发现 Windows Git 命令实际上需要 UNIX 变量,例如LC_ALL为了正确显示波兰语(或其他 UTF-8 字符)。只需尝试这个命令:

set LC_ALL=C.UTF-8

然后享受结果。这是我的控制台上发生的情况(字体“Consolas”,没有chcp必要的):


Update:

  • 好吧,为了像这样的 Windows 命令type(在控制台上显示文件)要正常工作,您确实需要chcp 65001.
  • 如果您更喜欢 Git Bash 中的命令,例如cat您从上述内容中获利set LC_ALL=C.UTF-8.

更新 2:如何使更改永久生效

As user 莫诺布莱恩说,创建一个环境变量LC_ALL并为其赋值C.UTF-8,无论是全局的还是仅适用于您自己的用户配置文件(抱歉德国屏幕截图):

下次打开命令处理器控制台 (cmd.exe) 时,您应该会在发出命令时看到变量值echo %LC_ALL%。在 PowerShell 中,您应该在发出命令时看到它$env:LC_ALL.

使UTF-8代码页永久打开的最简单方法regeedit并添加一个名为的新值Autorun字符串类型到节HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor并为其赋值chcp 65001.

从此以后,每次打开新的 cmd.exe 控制台时都会执行此命令。您甚至可以在新窗口中看到其输出:“Aktive Codepage: 65001”。 (或您各自语言中的类似内容)。

哦,顺便说一句:为了在 PowerShell 中正确显示 UTF-8 编码的文件,您可以使用Get-Content -encoding UTF8 file.txt or cat -encoding UTF8 file.txt (cat是一个别名Get-Content在 PowerShell 中)。

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

Windows 10 CLI 终端中的“git log”输出编码问题 的相关文章

随机推荐

  • 泛型方法和方法重载

    方法重载允许我们定义许多具有相同名称但具有不同参数集的方法 因此具有相同的名称但不同的签名 这两个方法是否重载 class A public static void MyMethod
  • 找不到`SQLitePCLRaw.batteries_v2`

    我添加了一个sqlite net pclNuGet 包到 Xamarin iOS 项目 该应用程序以以下异常结束 找不到程序集引用的 SQLitePCLRaw batteries v2 SQLite net 版本 1 1 0 0 文化 中性
  • 从 .html 文件读取其内容的简单 Flask 应用程序。外部样式表被阻止?

    我制作了一个非常简单的 Flask 应用程序 它从 html 文件读取其内容 除了样式之外 该应用程序可以正常工作 奇怪的是 我的内联 CSS 代码可以工作 但外部样式表却不能工作 我已经检查过语法 它应该可以工作 Flask 是否会以某种
  • 如何编写可变参数模板递归函数?

    我正在尝试编写一个可变参数模板constexpr计算给定模板参数总和的函数 这是我的代码 template
  • 快速安全的加密算法 C#

    我正在寻找一种使用 C 实现的快速且安全的加密算法 我需要能够恢复初始消息 你有什么建议 感谢您的帮助 如果需要非对称加密 请使用 2048 位 RSA 如果您可以使用对称加密 请使用 256 位 AES MSDN 参考 系统 安全 密码学
  • 自动调整用户表单大小

    目标是一个可以自动调整大小以显示所有可见控件但没有额外死区的用户窗体 顶部始终可见 3 个组合框 但在其下方是 26 个标签及其关联的 5 个选项按钮 复选框 这 26 行将全部开始隐藏 并且仅在特定条件下可见 三个组合框中的第一个将说明
  • 如何使用 DataTemplates 通过 ViewModel-First 方法缓存动态切换的视图

    我在用GalaSoft MvvmLight框架 我的一些看法MainWindow xaml我通过用户选择在运行时动态地在它们之间切换 这些视图使用以下技术与其相应的视图模型绑定 主窗口 xaml
  • 如何将存储库镜像同步到新的上游存储库

    我有一个仓库镜像服务器 myrepo 最初是为了镜像而创建的 与远程同步 repoA 也就是说 我使用类似以下的内容来创建它 cd myrepo repo init u git repoA server manifest git mirro
  • RedHat Enterprise Linux 5.3 及以上版本不正确支持 sem_timedwait?

    我们在使用 pthreadsem timedwait 的 RedHat Enterprise Linux 系统上看到了奇怪的行为 仅 5 3 及以上版本才会出现此情况 当我们使用 sem init 在后台线程上创建信号量时 不会返回错误 当
  • Xcode 错误:缺少必需的模块“Firebase”

    问题 我有一个动态框架 它使用Firebase由 cocoapods 添加 我还有应用程序 它使用这个动态框架 但是当我尝试构建项目时出现错误Missing required module Firebase 我尝试了以下方法 删除派生数据
  • 持续监控前 X 个进程的 CPU 使用率

    我希望能够每 5 秒将最高 CPU 消耗者输出到日志文件 这样我就可以在测试期间看到谁使用了最多的 cpu 我发现这个答案很常见 cpu Get Counter ComputerName localhost Process Processo
  • Mojolicious 中用于处理不同路径的全局变量和线程

    在我的 Mojolicious perl 代码中 我处理从远程客户端创建和监视的作业 我将作业保存在哈希数组中 这是一个全局变量 然后它在 PUT job create 和 GET job status 的处理程序中使用 当使用 PUT j
  • 映射抽象类和子类时NHibernate DuplicateMappingException

    我有一个抽象类及其子类 我想使用 NHibernate 将其映射到我的数据库 我在用着Fluent https github com FluentNHibernate fluent nhibernate wiki Fluent config
  • 连接故事板中 Cell Prototype 的插座

    我是故事板的新手 所以我遇到了一些困难 我已经创建了一个 TableViewController 我想自定义单元原型 在单元格原型中 我添加了几个标签 我想用我自己的继承自 UITableViewCell AreaListCell 的类进行
  • 正弦 180 的值为 1.22465e-16

    我想在ios4中实现一个正弦和余弦计算器 if operation isEqual sin operand operand M PI 180 0 operand sin operand 该代码为我提供了 0 到 90 之间的值的正确答案 当
  • socket.io - 为一个套接字获取多个字段?

    当用户断开连接时 我有以下代码 我想发出带有房间名称和用户名的信号 client get nickname function err name client get room function err2 room io sockets in
  • 如果启用静态压缩,IIS 中的 gzip js 不会被压缩

    我已经使用 Squishit 来缩小和捆绑 JS 并压缩捆绑文件我在 IIS 7 5 中启用了选项 启用静态内容压缩 问题是 Js 没有被压缩 我只是得到缩小的 js 但如果我启用动态内容压缩 那么 Js 就会被压缩 现在动态压缩的问题是它
  • scanf从一个输入读取多种数据类型

    所以我试图读入以下形式的方程mx b y 我该如何使用scanf读取多种数据类型 我尝试过使用类似的东西 scanf d c c d c d num1 variable sign num2 equal sign num3 在这种格式下 它读
  • 如何在Keycloak中创建脚本映射器?

    我需要在 Keycloak 中创建一个 Script Mapper 类型的协议映射器 该脚本应该获取用户属性 检查其大小 并将其放在令牌上 我没有找到有关如何创建脚本的文档或示例 从我收集到的零碎信息来看 我想脚本需要看起来像这样 var
  • Windows 10 CLI 终端中的“git log”输出编码问题

    Problem 我怎样才能使git log命令输出是否正确显示在 Windows CLI 终端中 Example 正如您所看到的 我可以正确输入变音字符 但是git log 输出以某种方式被转义 根据UTF 8编码表 http www ut