Вопрос по bash, windows, unicode – Юникод (utf-8) с git-bash

37

У меня возникли некоторые проблемы с настройкой юникода для работы с git-bash (в Windows 7). Я перепробовал много вещей без успеха. Хотя я не совсем уверен, что за это отвечает, поэтому я могу работать в неправильном направлении.

Похоже, что это возможно, поскольку кодировку cmd.exe можно изменить на unicode с помощью «chcp 65001».

Вот некоторые вещи, которые я попробовал (помимо очевидного просмотра параметров конфигурации в графическом интерфейсе).

Setting environment variables in '.bashrc'. I guess it makes sense this doesn't work since i think it's a linux thing. The 'locale' command does not exist.

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8

Starting out in cmd.exe, changing the encoding to unicode with 'chcp 65001' and then starting up git-bash. This causes me to get a permission denied when trying to cat my unicode test file. However, catting a file without unicode works just fine. As demonstrated, dropping back out to cmd.exe i can still "cat" the file. Using my default encoding (437) i can cat the file in bash (no permission denied but the output is fudged).

S:\>chcp 65001
Active code page: 65001
S:\>"C:\Program Files (x86)\Git\bin\sh.exe" --login -i
[email protected] /z
cat /s/unicode.txt
cat: write error: Permission denied
[email protected] /z
cat /s/nounicode.txt
abc
[email protected] /z
L /s/unicode.txt
-rw-r--r--    1 zarac    Administ        7 May 18 10:30 /s/unicode.txt
[email protected] /z
whoami
towelie\zarac
[email protected] /z
exit
Z:\>type S:\unicode.txt
abc£

Using the /U flag when starting the shell (makes sense that it doesn't work because it's not quite what it's for if-i-understand-correctly, but it has to do with unicode so i tried it).

C:\Windows\SysWOW64\cmd.exe /U /C "C:\Program Files (x86)\Git\bin\sh.exe" --login -i

As I prefer to use Console2, I've tried adding a dword value named CodePage with the value 65001 (decimal) to the windows registry under [HKEY_CURRENT_USER\Console] as well as [HKEY_CURRENT_USER\Console\Git Bash]. This seems to have the same effect as setting 'chcp 65001' accept that it's "automatic". (http://stackoverflow.com/questions/379240/is-there-a-windows-command-shell-that-will-display-unicode-characters)

JPSoft's TCC/LE

PowerCMD

stackoverflow

duckduckgo

ixquick / google

Error: User Rate Limit Exceeded

PS. Есть ли официальная документация для git-bash?

Error: User Rate Limit Exceededchcp 65001Error: User Rate Limit Exceeded bobince
Error: User Rate Limit Exceeded KurzedMetal
Error: User Rate Limit Exceededthis pageError: User Rate Limit Exceeded CharlesB
I'm open to pretty much any solutionError: User Rate Limit Exceeded KurzedMetal
Error: User Rate Limit Exceeded Hannes

Ваш Ответ

5   ответов
2

chcp.com 65001

5

Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededError: User Rate Limit ExceededError: User Rate Limit ExceededError: User Rate Limit ExceededError: User Rate Limit ExceededError: User Rate Limit Exceededkblees)

Win32: support Unicode console output

WriteConsoleW seems to be the only way to reliably print unicode to the console (without weird code page conversions).

Also redirects vfprintf to the winansi.c version.

Win32: add Unicode conversion functions

Add Unicode conversion functions to convert between Windows native UTF-16LE encoding to UTF-8 and back.

To support repositories with legacy-encoded file names, the UTF-8 to UTF-16 conversion function tries to create valid, unique file names even for invalid UTF-8 byte sequences, so that these repositories can be checked out without error.

Error: User Rate Limit Exceeded

Как включить UTF-8? Я использую Git Bash 2.11 и не использую UTF-8 в Windows 8 или Windows 10. Мои результаты часто загрязнены неправильными символами, и я хотел бы устранить проблему.
7

Error: User Rate Limit Exceeded

Error: User Rate Limit ExceededError: User Rate Limit Exceeded

Как можно это включить? Я использую Git Bash 2.11 и не использую UTF-8 в Windows 8 или Windows 10. Мои результаты часто загрязнены неправильными символами, и я хотел бы устранить проблему.
@jww После обновления с Git 2.9.2 до 2.15.0 только сейчас я обнаружил, что он существенно регрессировал, показывая кодировку UTF-8 (например,<E2><80><99> за) обратным выделением (то есть черным по белому, а не белым по черному), а не фактическим символом, как это было раньше. Я исправил это, установив переменную средыLC_ALL=en_AU.utf8 во всем мире. Обратите внимание, что я используюchcp 65001 (кодовая страница псевдо-UTF-8 для conhost). Это довольно похоже на то, что говорит голосующий по этому вопросу ответ.
33

Error: User Rate Limit Exceeded

$ git --version

git version 2.8.0.windows.1

Error: User Rate Limit Exceeded

$cd ~

$ls

AppData/
'Application Data'@
Contacts/
[email protected]
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'@

Error: User Rate Limit Exceeded

  1. Check your existing locale configuration

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

    As shown above, in my case it was not 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. Change the language for the current window (no need to do this on future windows, as they will be created with the settings of step 2)

     $ LANG='C.UTF-8'
    
  4. The ls command should now display properly

    AppData/
    'Application Data'@
    Contacts/
    [email protected]
    Desktop/
    Documents/
    Downloads/
    Favorites/
    Links/
    'Local Settings'@
    NTUSER.DAT
    .
    .
    .
    'Τα έγγραφά μου'@
    
это решает мою проблему :)
Вы единственный, кто действительно ответил на вопрос.
@jww Рад знать, что могу помочь
Просто добавлю к этому. Все эти настройки хранятся в ~ / .minttyrc
4

Error: User Rate Limit Exceeded

Error: User Rate Limit ExceededäError: User Rate Limit Exceeded

echo "ä"

Error: User Rate Limit Exceeded

$ echo -e "\0303\0244"
ä

Error: User Rate Limit Exceeded

$ php -r 'echo "\xC3\xA4";'
ä

Error: User Rate Limit ExceededäError: User Rate Limit Exceeded├ñError: User Rate Limit ExceededphpError: User Rate Limit Exceededcat:

#!/bin/bash

{ php.exe "[email protected]" 2>&1 1>&3 | cat 1>&2; } 3>&1 | cat

Error: User Rate Limit Exceeded

Error: User Rate Limit ExceededphpError: User Rate Limit Exceeded

$ php -r 'echo "\xC3\xA4";'
ä

Error: User Rate Limit Exceeded

$ git --version
git version 1.9.4.msysgit.1

Error: User Rate Limit Exceeded

Хорошее дополнение к другим ответам. Мне пришлось использовать этот обходной путь для сценариев PHP даже сейчас -git version 2.8.2.windows.1.

Похожие вопросы