cygwin“Bash Prompt Here”는 움라우트와 함께 작동하지 않습니다


0

chere경로에 독일어 움라우트가있는 위치에 cygwin 패키지와 함께 설치된 Windows 탐색기 상황에 맞는 메뉴 항목 "Bash prompt here"를 사용하면 작동하지 않습니다. 예를 들면 : 그것을 사용 c:/temp/ö에 연 배쉬 프롬프트에서 결과 c:/temp여는 동안, cmd경로에 움라우트와도 프롬프트 작품.

이 문제를 어떻게 해결합니까?

참고 사항 :

  1. 작성된 레지스트리 항목은 다음과 같습니다 c:\opt\cygwin\bin\mintty.exe -e /bin/xhere /bin/bash.exe "%L"(확장 컨텍스트 메뉴에서 "% L"은 "% V"로 대체되지만 작동하지 않습니다).
  2. cygwin의 로케일 설정 : LANG=de_DE.UTF-8
  3. 파일 시스템은 NTFS입니다. 따라서 파일 이름은 해당 설명서에서 무엇을 의미하든 "유니 코드"에 저장되었다고 주장합니다 ( 파일 이름 인코딩에 대한 Windows 개발자 센터 설명 )
  4. CMD 창의 코드 페이지 : 850 (powershell 명령에 따름 [System.Text.Encoding]::Default)
  5. Windows 코드 페이지 : 1252
  6. 세 가지 프로그램 (Windows 탐색기, cmd.exe, 민트에서 bash)은 다른 인코딩에도 불구하고 움라우트를 일관된 방식으로 보여줍니다.
  7. 폴더 나 파일이있는 네트워크 드라이브에서 주로 a) 많은 링크 (심볼릭 및 Windows 바로 가기로 참조) 및 b) 여러 다른 사용자가 소유 / 공유하는 문제로 인해 파일 이름을 바꿀 수 없습니다.

파일 시스템의 기본 코딩 시스템은 무엇입니까? 로케일 설정은 무엇입니까?
tripleee

답변:


0

CMD 창의 코드 페이지가 850 인 경우 파일 이름의 문자는 유효한 UTF-8 시퀀스가 ​​아닌 단일 바이트입니다. 시스템은 아마도 알 수없는 글리프를 표시 할 있습니다.

간단한 해결책은 무시하는 것입니다. 약간 덜 간단한 수정은 시스템을 어디에서나 유니 코드로 업그레이드하는 것입니다. 모든 파일의 이름을 올바른 유니 코드 이름으로 바꾼 다음 CMD 창을 설정하여 cp65001도 사용하십시오 (Windows 사용자가 아니므로 방법을 묻지 마십시오. Windows 기본 코드 페이지도 변경해야하는지 잘 모르겠습니다).


제안 해 주셔서 감사합니다. 실제로 내 드라이브에서이 작업을 수행했지만 네트워크 공유에서는이 방법을 사용할 수 없습니다 (이 정보와 함께 제공되는 질문)
jf1

일부 플랫폼에서는 공유를 마운트 할 때 파일 이름 문자 매핑을 정의 할 수 있지만 Windows 가이를 어떤 모양이나 형태로 지원하는지 모르겠습니다.
tripleee

0

마지막으로 내가 친절 적절한 문서 (mintty - 위키 날을 가리키는 mintty 개발자 자신이 도움을 받고 결국 : https://github.com/mintty/mintty/wiki/Tips#creating-a-folder-context-menu- min-for-mintty ). chere에 의해 작성된 컨텍스트 메뉴 항목은 디렉토리 이름에서 비 ASCII 문자와 함께 작동하지 않습니다.

그러나이 문제는 mintty 명령에 추가 매개 변수를 제공하여 간단히 완화 할 수 있습니다.이 명령은 xhere 스크립트 없이도 작업 자체를 처리 할 수 ​​있습니다. 따라서 상황에 맞는 메뉴 항목을로 교환 할 수 있습니다 C:\cygwin64\bin\mintty.exe --dir "%1" /bin/bash. 각 항목이 이제 제대로 작동합니다.


0

이 문제 및 이와 관련된 문제를 피하려면

16 진 코드가있는 문자 만 사용하십시오 ...

2d, 대시
30-39, 숫자
41-5a, 대문자 AZ
5f, 밑줄 문자
61-7a 소문자 az

... 파일 이름 아래의 표에서 확인하십시오.

예를 들어 네트워크 공유 및 휴대용 디스크에서 다른 OS로 파일을 이동하는 등의 다른 문제는 결국 문제의 원인이됩니다.

--- HEX / DEC 코딩 문자표 ---
ECMA- 라틴 1 ~ ISO 8859-1

       012 34 5678 9 abcdef 
       ----------------
 2/2 :! "# $ % & '() * +,-. /
 3/3 : 0 12 34 5678 9 :; ?
 4/4 : @ ABCDEFGHIJKLMNO
 5/5 : PQRSTUVWXYZ [\] ^ _
 6/6 :`abcdefghijklmno
 7/7 : pqrstuvwxyz {| } ~
 8/8 :  
 9/9 :  
10 / a : ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª«¬ ® ¯
11 / b : ° ± ² ³ µ ¶ · ¸ ¹ º»¼ ½ ¾ ¿
12 / c : À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï
13 / d : Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß
14 / e : à á â ã ä å æ ç è é ê ë ì í î ï
15 / f : ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.