sessões Unicode e MS DOS

0

Considerando o pesadelo do Windows CMD do UTF-8 + ...

Depois de ler esta pergunta estas soluções são apenas parciais? Existe uma maneira de definir globalmente o conjunto de caracteres / codificação em um ambiente cmd? Parece que o comando CHCP não altera as codificações stdout / stderr.

Para verificar: escreva um programa que preencha um arquivo com strings latino / coreano / ucraniano.

Na saída direta, o arquivo ficará bem se você definir a codificação corretamente em seu código-fonte (verifiquei com Java, configurações de codificação fáceis para arquivos). Mas se você redirecionar sua saída para um arquivo de log, você simplesmente terá séries de ???????????????????? ...

A indireção também pode ser útil, assim:

PROMPT> myprog < inputdata.txt > outputdata.txt

Estou faltando alguma coisa? É cmd que converte mal stdout, ou Java que se adapta System.out, dependendo da codificação cmd? Não encontrei nenhum método para redefinir a codificação System.out / err.

    
por Grubert 17.06.2015 / 16:27

1 resposta

0

Considering UTF-8 + Windows CMD nightmare...

Funciona para C #.

Deve funcionar também para Java, talvez você esteja fazendo isso errado. Você deve colocar seu código de problema no stackoverflow e perguntar onde você está errado com as instruções de codificação.

To check it: write a program that fills a file with latin/korean/ukrainian strings.

Eu fiz algo parecido em C #

On direct output,

você quer dizer em exibição

the file will be ok if you set the encoding properly into your source code (i checked it with Java, easy encoding settings for files). But if you redirect your output into a log file, you will simply have series of ???????????????????? in it ...

Você precisa obter a declaração de codificação correta em seu código e, em seguida, o > vai funcionar.

Eu não tive que mudar o CHCP para apenas redirecionar caracteres unicode não ascii para um arquivo. Ou, para colocar de outra forma.

The indirection could be useful too, like this:

PROMPT> myprog < inputdata.txt > outputdata.txt Am i missing something? Is it cmd that badly converts stdout, or Java that adapts System.out, depending of the cmd encoding? I have not found any method to re-define System.out/err encoding.

É tudo um problema com seu código Java.

Veja como funciona aqui em C #

agudo

E olhe meu comentário sobre a resposta de Htin. Mas isso é para C #

Você quer isso para Java, envie uma parte demonstrativa do código com sua pergunta para stackoverflow. É um problema de programação que você tem.

    
por 22.06.2015 / 12:40