chcp 10000
echo hell☺ w☻rld♥! >> "UTF-16 file☺☻♥♦♣♠"
OK, ele cria o arquivo correto, mas no conteúdo há pontos de interrogação em vez de caracteres Unicode. Como corrigi-lo?
Responder1
Seu código não está correto, pois 10000 não é uma página de código Unicode. VerIdentificadores de página de código.
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)
Não sei por que, mas o prompt de comando parece interpretá-los como caracteres de controle quando colados, especificamente SOH (Início do Título, 01), STX (Início do Texto, 02) e ETX (Fim do Texto, 03).
Do lado positivo, o PowerShell parece lidar com isso corretamente. O Notepad++ abriu o arquivo de texto resultante como "UCS-2 Little Endian" automaticamente e exibe os caracteres corretos.
Ok, descobri por que o UTF-8 não estava funcionando para mim. A fonte deve ser definida como Lucida Console, já que as fontes raster padrão não têm suporte a Unicode.
Responder2
Ambos 65001.txt
e 1200.txt
contêm a mesma string: абв™
mas em codificação diferente. O comando:
chcp 65001 & type 65001.txt
altera com sucesso a página de código, mas exibe o lixo.
O comando:
type 1200.txt
exibe os caracteres corretos, mas o comando
for /f %A in ('type 1200.txt') do echo %A
exibe абвT
.
Portanto, cmd.exe É capaz de trabalhar com a página de código 1200 (com alguns limites), enquanto não consigo obter resultados satisfatórios com a página de código 65001.