Unicode (utf-8) 与 git-bash

2023-12-11

我在让 unicode 适用于 git-bash (在 Windows 7 上)时遇到一些麻烦。我尝试了很多事情但没有成功。虽然,我不太确定造成这种情况的原因,所以我可能在错误的方向上工作。

看来这应该是可能的,因为 cmd.exe 的编码可以使用“chcp 65001”更改为 unicode。

以下是我尝试过的一些操作(除了查看 GUI 中的配置选项之外)。

  1. 在“.bashrc”中设置环境变量。我想这行不通是有道理的,因为我认为这是 Linux 的事情。 “区域设置”命令不存在。

    export LC_ALL=en_US.UTF-8
    export LANG=en_US.UTF-8
    export LANGUAGE=en_US.UTF-8
    
  2. 从 cmd.exe 开始,使用“chcp 65001”将编码更改为 unicode,然后启动 git-bash。这导致我在尝试获取 unicode 测试文件时权限被拒绝。然而,catting 一个没有 unicode 的文件就可以了。如图所示,退出 cmd.exe 我仍然可以“cat”该文件。使用我的默认编码(437),我可以在 bash 中捕获该文件(没有拒绝权限,但输出是伪造的)。

    S:\>chcp 65001
    Active code page: 65001
    S:\>"C:\Program Files (x86)\Git\bin\sh.exe" --login -i
    zarac@TOWELIE /z
    cat /s/unicode.txt
    cat: write error: Permission denied
    zarac@TOWELIE /z
    cat /s/nounicode.txt
    abc
    zarac@TOWELIE /z
    L /s/unicode.txt
    -rw-r--r--    1 zarac    Administ        7 May 18 10:30 /s/unicode.txt
    zarac@TOWELIE /z
    whoami
    towelie\zarac
    zarac@TOWELIE /z
    exit
    Z:\>type S:\unicode.txt
    abc£
    
  3. 启动 shell 时使用 /U 标志(这是有道理的,它不起作用,因为它不完全是如果我理解正确的话,但它与 unicode 有关,所以我尝试了)。

    C:\Windows\SysWOW64\cmd.exe /U /C "C:\Program Files (x86)\Git\bin\sh.exe" --login -i
    
  4. 由于我更喜欢​​使用 Console2,因此我尝试将名为 CodePage 且值为 65001(十进制)的双字值添加到 Windows 注册表中的 [HKEY_CURRENT_USER\Console] 以及 [HKEY_CURRENT_USER\Console\Git Bash] 下。这似乎与设置“chcp 65001”具有相同的效果,接受它是“自动”的。 (http://stackoverflow.com/questions/379240/is-there-a-windows-command-shell-that-will-display-unicode-characters)

  5. JPSoft的TCC/LE

  6. PowerCMD

  7. 堆栈溢出

  8. 鸭鸭戈

  9. ixquick /谷歌

因此,如果可以解决该权限问题,方法 2 似乎是可行的。然而,我对几乎任何解决方案都持开放态度,尽管我更喜欢使用 Console2(主要是因为它的漂亮选项卡功能)。也许一种解决方案是设置 SSH 服务器,然后使用 Putty/Kitty 连接到它,但这是错误的! ; )

附言。有没有 git-bash 的官方文档?


我在 MSYS Git 2.8.0 中遇到了同样的问题,结果发现它只需要更改配置。

$ git --version

git version 2.8.0.windows.1

我的系统中 Git Bash 控制台的默认配置不显示希腊文件名。

$cd ~

$ls

AppData/
'Application Data'@
Contacts/
Cookies@
Desktop/
Documents/
Downloads/
Favorites/
Links/
'Local Settings'@
NTUSER.DAT
.
.
.
''$'\316\244\316\261'' '$'\316\255\316\263\316\263\317\201\316\261\317\206\316\254'' '$'\316\274\316\277\317\205'@

最后一行应显示“Τα έγγραφά μου”,即“我的文档”的希腊语翻译。为了修复它,我按照以下步骤操作:

  1. 检查您现有的区域设置配置

    $locale
    
    LANG=en
    LC_CTYPE="C"
    LC_NUMERIC="C"
    LC_TIME="C"
    LC_COLLATE="C"
    LC_MONETARY="C"
    LC_MESSAGES="C"
    LC_ALL=
    

    如上所示,在我的例子中它不是 UTF-8

  2. Change the locale to a UTF-8 encoding. Click the icon on the left side of MINGW title bar, select "Options" and in the "Text" category choose "UTF-8" Character set. You should also choose a unicode font, such as the default "Lucida Console". My configuration looks as following: MinGW locale configuration

  3. 更改当前窗口的语言(无需在以后的窗口上执行此操作,因为它们将使用步骤 2 的设置创建)

     $ LANG='C.UTF-8'
    
  4. ls 命令现在应该正确显示

    AppData/
    'Application Data'@
    Contacts/
    Cookies@
    Desktop/
    Documents/
    Downloads/
    Favorites/
    Links/
    'Local Settings'@
    NTUSER.DAT
    .
    .
    .
    'Τα έγγραφά μου'@
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unicode (utf-8) 与 git-bash 的相关文章

  • 忽略 sed 查找和替换命令中的斜杠

    我正在尝试在终端中使用 sed 进行查找和替换 在 apache 配置文件中 我尝试替换 DocumentRoot var www with DocumentRoot var www mysite com public html 从命令行
  • Visual C++ free 和 malloc 的线程安全性?

    有谁知道 free 和 malloc 在 Visual C 2010 上是否是线程安全的 我遇到了奇怪的问题 内存被损坏 我几乎认为这是唯一的可能性 有谁知道安全装置是否可以打开和关闭以及如何打开和关闭 前提是您链接的是线程安全库 http
  • Python 删除额外的特殊 unicode 字符

    我正在 python 中处理一些文本 它内部已经采用 unicode 格式 但我想删除一些特殊字符并用更标准的版本替换它们 我目前有一条看起来像这样的线路 但它变得越来越复杂 我发现它最终会带来更多麻烦 tmp infile lower r
  • shutdown.exe 参数带有破折号或斜杠?

    我使用的电话shutdown exe重新启动安装了不同版本 Windows 的计算机 对于 Windows XP 命令是 shutdown exe r f t 01 对于其他版本的 Windows 我使用 shutdown exe L R
  • 注册表碎片整理程序[重复]

    这个问题在这里已经有答案了 这是出于好奇 但我见过几个 其中一些非常流行 称为注册表碎片整理程序的软件 虽然我可以看到它们提供的好处 但我很好奇您到底是如何进行注册表碎片整理的 请注意 我并不是要求提供软件名称 只是询问其如何以编程方式完成
  • 如何重命名 bash 函数?

    我正在围绕另一个定义 bash 函数的软件包开发一些方便的包装器 我想用我自己的同名函数替换他们的 bash 函数 同时仍然能够从我的函数中运行他们的函数 换句话说 我需要重命名它们的函数 或者为其创建某种持久别名 当我创建同名函数时 该别
  • 运行 shell 命令并将输出发送到文件?

    我需要能够通过 php 脚本修改我的 openvpn 身份验证文件 我已将我的 http 用户设置为免通 sudoer 因为这台机器仅在我的家庭网络中可用 我目前有以下命令 echo shell exec sudo echo usernam
  • 无法在 Windows 7 上安装 Android USB 驱动程序

    所以我想使用我的新 Nexus 5 来调试我的应用程序 我尝试通过以下方式安装 Android USB 驱动程序装置经理 http developer android com tools extras oem usb html Win7但我
  • 在 bash 中,如何除以两个变量并输出四舍五入到小数点后 5 位的答案? [复制]

    这个问题在这里已经有答案了 我将两个变量作为输入 将它们相除后 我希望将输出四舍五入到小数点后 5 位 我已经尝试过这种方法 gt sum 12 n 7 output scale 5 sum n bc echo output 我的代码没有显
  • 我可以在 Emacs 的 shell 模式下使用 PowerShell 吗?

    我可以在 emacs 的 shell 模式下使用 powershell 作为 shell 吗 How 请参阅 Jeffrey Snover 的博客文章在 Emacs 内运行的 PowerShell http blogs msdn com p
  • 在 Windows 上使用“perl6”命令和 Git Bash

    使用 Windows 我安装了乐道之星 https rakudo org files和 Git 并确保C rakudo bin and C rakudo share perl6 site bin位于我的 Path 环境变量中 现在 输入pe
  • 原子的 C++ 内存屏障

    在这方面我是个新手 谁能提供以下内存屏障之间差异的简化解释 窗户MemoryBarrier 围栏 mm mfence 内联汇编asm volatile memory 内在的 ReadWriteBarrier 如果没有简单的解释 一些好文章或
  • 如何回忆上一个 bash 命令的参数?

    Bash 有没有办法回忆上一个命令的参数 我通常这样做vi file c其次是gcc file c Bash 有没有办法回忆上一个命令的参数 您可以使用 or 调用上一个命令的最后一个参数 Also Alt can be used to r
  • pyodbc 无法正确处理 unicode 数据

    我确实使用 pyodbc 成功连接了 MySQL 数据库 并且它可以很好地处理 ascii 编码的数据 但是当我打印使用 unicode utf8 编码的数据时 它引发了错误 UnicodeEncodeError ascii codec c
  • 多个原始输入窗口接收器

    我有一个仅消息窗口 ATL CWindowImpl 它使用 RIDEV INPUTSINK 标志将自身注册为原始输入 这意味着无论该窗口是否是前台窗口 它都会获取所有输入 当该窗口只有一个实例时 这非常有效 但是 当我创建超过 1 个窗口实
  • 如何为所有语言创建字母数字正则表达式?

    我今天遇到了这个问题 此正则表达式仅匹配英语 a zA Z0 9 如果我需要支持这个世界上的任何语言 我应该编写什么正则表达式 如果您使用字符类简写和 Unicode 识别正则表达式引擎 您就可以做到这一点 这 wclass 匹配 单词字符
  • GetEventLogs() 返回没有设置事件日志?

    采取以下 C 代码 EventLog eventLogs eventLogs EventLog GetEventLogs computername foreach EventLog evt in eventLogs statusMessag
  • 一次用 \r\n & \n & \r 分解字符串? [复制]

    这个问题在这里已经有答案了 我想按行分割字符串 但我希望它基于所有主要使用的换行符 n r n r 并返回一个包含每一行的数组 您可以使用正则表达式和preg split http php net preg split反而 lines pr
  • 独特的 Linux 文件名,可按时间排序

    以前我用的是uuidgen http man7 org linux man pages man1 uuidgen 1 html创建唯一的文件名 然后我需要通过 bash 脚本按日期 时间迭代该文件名 从那时起 我发现简单地通过 ls l 循
  • 检查字符串是否编码为 UTF-8

    function seems utf8 str length strlen str for i 0 i lt length i c ord str i if c lt 0x80 n 0 0bbbbbbb elseif c 0xE0 0xC0

随机推荐

  • 从 SELECT 查询中获取相反的结果

    这些是我的桌子 room roomID roomNum customer customerID Surname etc contract contractID roomID weekNum paymen t paymentID custom
  • 在react-router onEnter hooks中延迟添加新的史诗是一种有效的做法吗?

    当将 redux observable 与 React router 一起使用时 按照文档中的说明异步添加新的史诗是否有意义here在路由更改期间 react router 的 onEnter 钩子内部 epics index js imp
  • 使用facet_grid时在ggplot2中指定自定义误差线

    我使用数据创建了多个条形图stat summary 但是 我想手动指定误差线的限制 而不是使用mean cl boot 对于使用图形绘制的数据如何做到这一点facet grid 我用来创建图表的代码如下 graph lt ggplot sl
  • 在打开的浏览器中更改 URL 的批处理文件

    我见过这样的事情 start d C Program Files Internet Explorer x86 IEXPLORE EXE www google com 但这只是打开一个新选项卡 我希望它将打开的任何网站更改为列出的网站 最终目
  • LsaEnumerateAccountRights 始终返回“找不到文件”

    我正在调用 Advapi32 dll LsaEnumerateAccountRights 函数 该函数具有来自 LsaOpenPolicy 的策略句柄和来自 LookupAccountName 的帐户 SID 但是 尽我所能 我总是返回 0
  • 如何在 C++ Win32 GUI 中为文本框设置默认背景(灰色)文本?

    创建文本框时 hwnd CreateWindowEx 0 EDIT 如何在该框的背景上设置占位符 默认 灰色 文本 在提供一些输入时该文本会消失 创建编辑控件后 发送EM SETCUEBNER给它留言 SendMessage hwndEdi
  • Firebase 计算父级的子级数

    我正在尝试获取 js firebase 中父节点的子节点数量 我想要 user Yuna99s993m count 1 Yada99s993m count 2 我正在创建一个云函数 每次输入新节点时 它都应该添加等于用户节点 numChil
  • 将 @ManagedBean 切换到 @Named 后:javax.el.PropertyNotFoundException:目标无法访问,标识符“person”解析为 null [重复]

    这个问题在这里已经有答案了 我只是测试这个 JSF 页面 所以我没有设置action属性中的
  • Android 上的 Pygame

    我想知道是否有人可以给我详细解释如何在 Android 手机上运行使用 Pygame 开发的游戏 应用程序 我最近完成了 PacMan 的编程 它在我的电脑上运行得很好 但我认为如果我能让它在我的手机上运行那就太棒了 我尝试按照以下说明进行
  • 如何检查错误的日期时间条目(python/pandas)?

    我有一个 Excel 数据集 其中包含员工输入的工作时间的日期时间值 现在快到年底了 他们想报告一下 但里面充满了错误的条目 因此我需要清理它 以下是一些错误条目的示例 面对这样的数据集你会采取什么方法 我首先使用将日期列转换为日期时间df
  • 从车牌中删除额外的像素/线

    我正在使用基于 SVM 分类的 HOG 特征检测器 我可以成功提取车牌 但提取的车牌除了车牌号外还有一些不必要的像素 线 我的图像处理流程如下 在灰度图像上应用 HOG 检测器 裁剪检测到的区域 重新调整裁剪图像的大小 应用自适应阈值来突出
  • 反应中带有 Tailwind 的动态类名

    我正在制作简单的 todo 项目来提高我的反应技能 其中之一是选择任务卡的颜色 但我不明白为什么我的方法不起作用 这里的code import React from react const TaskCard React FC gt let
  • 对 Base::object 链接器错误 @ c++ w/ freeglut 的未定义引用

    我有这个代码 Gnome cpp 文件 include Living h class Gnome public Living private public Gnome void drawObjects Gnome Gnome spriteI
  • 以编程方式更改 GridView 中的 ImageView

    我已经设置了带有 TextView 叠加层的 ImageView 网格 我的ImageAdapter代码如下 public View getView int position View convertView ViewGroup paren
  • 文字肖像可视化[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我停了下来 看到了这个可视化 它被称为文字肖像 我的问题是 如何做这样的事情 有描述这个的教程或论文吗 我从来没有见过这个 但我过去做过位图到 ASCII 艺术转换器 这是类似的
  • Swift 函数在应用程序中有效,但在 override func viewDidLoad() 中无效

    在我的 iOS 应用程序中 我有两个与 Firebase 相关的函数 我想在 viewDidLoad 中调用它们 第一个随机选择一个孩子 queryOrderedByKey 并将孩子的密钥作为字符串输出 第二个使用该密钥并且observeE
  • 将 Powershell.exe 的输入和输出重定向到 C++ 中的管道

    我正在尝试在 C 中执行 powershell 命令并通过管道获取其输出 我的程序非常适合 cmd exe 但是 当我尝试使用 powershell exe 执行相同的操作时 我只得到 W 作为输出 我已经注释了下面代码中需要修改才能执行
  • 在 asp.net 中动态调整图像大小

    为简单起见 假设我有一个网页需要显示图像的缩略图 图像位置存储在数据库中 图像存储在 Amazon S3 上 是否可以让我的网络服务器在将大图像传送到客户端之前缩小其尺寸 这样我就不必存储每个图像的缩略图 并且客户端可以下载较小的文件 关于
  • 如何在JNI中将指针从java传递到C?

    我有一个本机方法int sum int int 我如何从java端传递这个方法的参数 编辑 我成功运行的示例方法是 双 gsl stats mean doubleArray int int 这个方法在 GSL 中可用 因为我已经创建了共享对
  • Unicode (utf-8) 与 git-bash

    我在让 unicode 适用于 git bash 在 Windows 7 上 时遇到一些麻烦 我尝试了很多事情但没有成功 虽然 我不太确定造成这种情况的原因 所以我可能在错误的方向上工作 看来这应该是可能的 因为 cmd exe 的编码可以