cmd.exe의 UTF-16 파일 출력

cmd.exe의 UTF-16 파일 출력
chcp 10000
echo hell☺ w☻rld♥! >> "UTF-16 file☺☻♥♦♣♠"

좋습니다. 올바른 파일이 생성되지만 콘텐츠에 유니코드 문자 대신 물음표가 있습니다. 어떻게 고치나요?

답변1

10000은 유니코드 코드 페이지가 아니기 때문에 코드가 올바르지 않습니다. 보다코드 페이지 식별자.

10000   macintosh   MAC Roman; Western European (Mac)
...
1200    utf-16      Unicode UTF-16, little endian byte order (BMP of ISO 10646); available only to managed applications
1201    unicodeFFFE Unicode UTF-16, big endian byte order; available only to managed applications
...
12000   utf-32      Unicode UTF-32, little endian byte order; available only to managed applications
12001   utf-32BE    Unicode UTF-32, big endian byte order; available only to managed applications
...
65000   utf-7       Unicode (UTF-7)
65001   utf-8       Unicode (UTF-8)

이유는 잘 모르겠지만 붙여넣을 때 명령 프롬프트는 이를 제어 문자로 해석하는 것 같습니다. 특히 SOH(제목 시작, 01), STX(텍스트 시작, 02) 및 ETX(텍스트 끝, 03)입니다.

장점으로는 PowerShell이 ​​이를 적절하게 처리하는 것 같습니다. Notepad++는 결과 텍스트 파일을 "UCS-2 Little Endian"으로 자동으로 열었으며 올바른 문자를 표시합니다.


좋아, UTF-8이 나에게 적합하지 않은 이유를 알아냈습니다. 기본 래스터 글꼴은 유니코드를 지원하지 않으므로 글꼴은 Lucida Console로 설정해야 합니다.

답변2

65001.txt및 둘 다 1200.txt동일한 문자열을 포함 абв™하지만 인코딩이 다릅니다. 명령:

chcp 65001 & type 65001.txt 

코드 페이지를 성공적으로 변경했지만 가비지를 표시합니다.

명령:

type 1200.txt

올바른 문자를 표시하지만 명령은

for /f %A in ('type 1200.txt') do echo %A

표시됩니다 абвT.

따라서 cmd.exe는 코드 페이지 1200(일부 제한 있음)에서 작동할 수 있지만 코드 페이지 65001에서는 만족스러운 결과를 얻을 수 없습니다.

관련 정보