No Windows 7 cmd.exe, por que tanto o utf8 (65001) quanto o gbk (936) exibem o nome de arquivo chinês corretamente?

1

No Win7 cmd.exe, a execução dos seguintes comandos reproduzirá a situação que enfrentei hoje:

(para esclarecer, minha partição D: está formatada como NTFS.)

D:\...\_play\notes> chcp
Active code page: 65001
D:\...\_play\notes>dir /b
输入.txt
输出.txt
D:\...\_play\notes> chcp 936
活动代码页: 936                 (the chinese version of "Active Code Page: 936")
D:\...\_play\notes>dir /b
输入.txt
输出.txt

Este é o comportamento do comando dir , e quando comparado com o comando type , parece ainda mais confuso.

D:\...\_play\notes>chcp
活动代码页: 936                 (the chinese version of "Active Code Page: 936")
D:\...\_play\notes>type 输入.txt
====== 璺ㄧ晫鍙傝€冭祫婧愪俊鎭緭鍏ュ獟浠?=====   (text garbled as the file is encoded in utf8)
D:\...\_play\notes> chcp 65001
Active code page: 65001
D:\...\_play\notes>type 输入.txt
====== 跨界参考资源信息输入媒介 ======
    
por pimgeek 05.07.2013 / 05:23

1 resposta

4

Os nomes dos arquivos são armazenados como UTF-16LE em NTFS e VFAT, e as funções de arquivo sabem como convertê-lo para o CP atual (se possível). O conteúdo do arquivo é lido como bytes e, portanto, aparece truncado em qualquer coisa que não seja o CP apropriado.

    
por 05.07.2013 / 05:25