Windows 7에서도 "dir"을 수행하고 유니 코드 문자가있는 파일 이름을 볼 수 있습니까?


5

이것은 다소 질문과 관련이 있습니다.

Windows 7에서 dir 또는 tree는 유니 코드 문자를 표시 할 수 없으며 cmd / U를 사용하여 cmd를 시작하기도합니다

Windows 7에서도 유니 코드를 파일로 가져올 수있는 유일한 방법은

> cmd /U
> dir /B > files.txt

메모장에서 파일을 열고 "다른 이름으로 저장"을 시도하면 파일이 "유니 코드"가됩니다. dir /B > files.html 파이어 폭스에서 HTML 파일을 열면 UTF-16 (또는 UTF-16 LE)의 인코딩을 사용하여 표시 할 수 있습니다.

그러나 파일로 이동하는 대신 화면에서보고 싶다면 여전히 불가능합니다. 그것이 일어날 수있는 방법이 있습니까? 아마도 어떤 식 으로든 cmd는 인쇄 할 수없는 문자를 "?"로 표시하지 않을 것입니다.

업데이트 : cmd.exe, cygwin의 bash (Windows) 및 PowerShell을 사용해 보았습니다. 그들은 동일합니다. "Properties - & gt; Font"를 Consolas 또는 Lucida Console로 변경 한 경우를 제외하면 몇 가지 개선점이 있습니다. 이제는 물음표가 아니지만 사각형 테두리 또는 물음표가있는 사각형입니다.

Mac OS X이 장착 된 고가의 Mac 컴퓨터에서도 사용할 수 있습니다. 무료 우분투도 그렇게 할 수 있습니다.

답변:


5

이것은 매우 오래된 질문이지만 여기에 제시된 답변은 모두 잘못되었습니다.

Windows 명령 행 (CMD.exe)에서 유니 코드 출력을 볼 수 없습니다. 그 이유는 CMD는 유니 코드를 표시 할 수 없습니다. 그러나 표시 할 수 있습니다. DBCS (더블 바이트 문자 세트).

예를 들어 일본어 출력을보고 싶다면 시스템 로켈을 일본어로 변경하십시오. 재부팅하십시오. 그런 다음 명령 줄에서 일본어 DBCS (예 : Shift-JIS) 문자를 볼 수 있습니다. Windows는 일본어 Shift-JIS, 중국어 (간체), 한국어 및 대만어 "Big5"DBCS 코드 페이지를 지원합니다.

덧붙여 말하자면, UTF-16 (Microsoft에서 "Unicode"와 부정확하게 사용되는)을 파일로 파이프 한 다음, 메모장에서 해당 파일을 열고 유니 코드 문자를 볼 수 있습니다. CMD.exe에서 횡설수설 텍스트를 표시하고 복사하여 메모장에 붙여 넣은 다음 유니 코드 문자를 볼 수도 있습니다. 즉, CMD는 유니 코드를 지원하지만 디스플레이 유니 코드.

자세한 정보를 찾을 수 있습니다. 이 블로그 게시물에 .


1

귀하의 사용자 이름을 기반으로 나는 아시아 언어로 주로 일한다고 생각합니다.

Windows 도구는 유니 코드 모드에서 정상적으로 작동합니다 ( dir 파일에 저장하고 편집기로 해당 파일 열기).

  1. 도구가 그 일을한다.
  2. 유니 코드 문자를 출력한다.
  3. 다른 프로그램이이 출력을 받아서 표시해야합니다.

화면에 문자를 표시하려면 3 단계의 프로그램에서 주어진 바이트 시퀀스에 적합한 문자 모양을 찾아야합니다. 예:

  • 0x65 'a'는 각 글꼴의 다른 글리프에 매핑됩니다 ( 'a'는 글꼴과 글꼴이 다르기 때문에)

  • 0x937 'Ω'(그리스어 '오메가')는 각 글꼴의 다른 글리프에도 매핑됩니다.

이 매핑은 글꼴에 주어진 바이트 시퀀스에 대한 글리프 (glyph)가있는 경우에만 작동합니다. 그렇지 않으면 시각적 인 결과가 다르며 때로는 '?', 때때로 다이아몬드 등이 보입니다.

다시: dir bytesequences를 생성합니다. 때때로 ASCII 범위에 속하는 경우도 있고 때로는 유니 코드 범위에있는 경우도 있습니다 (파일 이름에 따라 다름). 이 시퀀스를 실제로 bytesequences를 렌더링하는 다른 프로그램으로 보냅니다. 이러한 시퀀스를 표시하려면이 프로그램에서 시퀀스를 글리프로 매핑해야합니다. 이렇게하려면 글립 문자를 검색해야합니다. 폰트에, 지정된 순차 순서의 Glyph가없는 경우, 프로그램은, 예를 들어, dir.

그래서 문제의 해결책 (윈도우의 '콘솔 / 터미널'에서 유니 코드 문자를 보는 것)은 다음과 같습니다 : 주어진 거의 모든 유니 코드 bytesequence에 대해 거의 모든 글리프가있는 프로그램 용 글꼴을 사용하십시오.


1
hm이지만 cmd, cygwin bash 및 PowerShell은 모두 래스터 글꼴, Lucida 콘솔 및 Consolas ...의 3 가지 글꼴로 제한됩니다. 실제로 Windows는 현재 글꼴로 어떤 것도 표시 할 수없는 경우 일반적으로 유니 코드 글꼴로 되돌아갑니다. .. 또한 출력을 리디렉션하면 dir > file.txt 화면의 "정사각형 상자"에도 불구하고 여전히 파일에 물음표가 표시됩니다.
太極者無極而生

@ Jian Lin : 그렇습니다.하지만이 글리프가 포함 된 글꼴을 제공하는 것은 본질적으로 문제입니다. 심지어 창문이 "일부"유니 코드 문자 모양을 포함하는 "일부"글꼴로 떨어지 더라도 아시아 문자 모양을 표시하는 데 충분하지 않습니다 (아시아 문자 모양에 문제가있는 것 같습니까?).
akira

일부 웹 사이트에 따르면 "Ascender Uni Duo"가 ( "고정"의 경우에도) 최상의 글꼴 인 것으로 나타났습니다. ascendercorp.de/fonts/multilingual/ascender-uni 하지만 어쩌면 당신은 더 낫거나 싼 것을 찾을 수 있습니다. en.wikipedia.org/wiki/Unicode_typefaces
akira

@akira 전체 유니 코드 문자 모양을 표시 할 수있는 Windows 7에는 많은 글꼴이 있습니다. 하지만 (1) Cmd 창에서 그 중 하나를 선택할 수는 없습니다. (2) 창이나 응용 프로그램이 Lucida Sans Unicode와 같은 유니 코드를 표시 할 수있는 글꼴로 돌아 가면 대부분의 중국어 문자를 표시 할 수 있습니다.
太極者無極而生

1
@akira : 좋은 답변, 나는 "16 비트 문자열"또는 "UTF-16 문자열"로 "바이트 시퀀스"를 바꿀 수 있습니다. Windows가 내부적으로 사용하는 것이기 때문입니다.
Philipp

0

https://stackoverflow.com/questions/388490/unicode-characters-in-windows-command-line-how

용도 chcp 65001 코드 페이지를 UTF8로 변경하고 Lucida Console을 사용하십시오.


흠 ... 여전히 작동하지 않습니다 ... cmd / U, chcp 65001, dir 및 dir / B 글꼴은 이미 Lucida Console로 설정되어 있지만 여전히 동일합니다.
太極者無極而生

1
콘솔에 글꼴을 추가하려고 할 수 있습니다. support.microsoft.com/kb/247815 blogs.msdn.com/b/oldnewthing/archive/2007/05/16/2659903.aspx (문제에 대한 일부 논의는 후자).
ta.speot.is

그것 모든 텍스트를 렌더링하기 위해 프로그램에 제공하는 글꼴에 따라 다릅니다. 지원 기사, 좋은 정보를 읽으십시오.
akira

1
@taspeotis : Windows 콘솔은 코드 페이지 설정에 관계없이 항상 내부적으로 유니 코드를 사용합니다 (어쨌든 더 이상 사용되지 않으며 이전 버전과의 호환성을 위해 포함되어 있음). 정말 글꼴 문제 일뿐입니다.
Philipp

Win 7에 포함 된 글꼴을 사용할 수 있습니까? MingLiU, DFKai-SB
太極者無極而生

0

Windows 콘솔은 항상 유니 코드를 내부적으로 사용하므로 인코딩과 관련이 없습니다. 문자는 프로그래밍 및 유럽 언어 용으로 설계된 사용하는 글꼴에서는 사용할 수 없습니다. 지금은 Windows에 액세스 할 수 없지만 Lucida Console 글꼴로 전환 한 후 그리스 문자를 인쇄 할 수 있습니다. DejaVu Sans Mono와 같은 글꼴을 사용하면 효과가있을 수 있습니다.


나는 러시아어 파일 이름을 만들었고 cmd.exe는 lucida로 전환 한 후 글리프를 올바르게 표시했습니다. 아시아 글꼴에 대해서는 OP가 "더 나은"또는 "유니 코드 완전한 고정 글꼴"을 선택해야한다고 생각합니다 (비록 그 대답을 좋아하지 않더라도 :)).
akira

0

이것은 PowerShell을 사용하는 솔루션입니다.

1) Start 윈도우 7의 버튼
2) 이제 빈 줄에 다음을 입력하십시오. PowerShell
삼) 고르다 PowerShell ISE & lt; - 참고 ISE

자, 만약 네가 그렇게한다면 ls, 당신은 유니 코드 문자를 볼 수있을 것입니다 ...

4) 또한 사용하는 경우 chcp 65001, 프로그램이 UTF-8 문자를 출력하면 멋지게 표시됩니다.

당신은 또한 수 ls > list.txt 그리고 type list.txt 내용은 유니 코드 문자로 표시됩니다.

tree 아직 유니 코드 문자가 표시되지 않습니다.

PowerShell ISE 내부에서도, cmd /U /C dir /B 어느 쪽도 일하지 않을 것이다.

ls -R 의지.


ls Powershell에서 실제로 "Get-ChildItem"의 별칭입니다.
KdgDev

그리고? 네가 사용한다고 말하지 마라. Get-ChildItem 명령 줄에서 매일 대신 ls. 예를 들어, 우리는 보통 이산화탄소 대신에 물을 마 십니다.
太極者無極而生
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.