Colocando um arquivo codificado com UTF-8 na área de transferência com CLIP.EXE no Windows?

3

Eu tenho uma situação onde eu tenho um programa Java que primeiro escreve um arquivo de texto e invoca "CMD / C CLIP < textfile" para poder colocar um arquivo arbitrariamente grande na área de transferência do Windows. Funciona bem.

Agora descobri que há um problema de codificação, portanto, assegurei que eu possuísse um arquivo codificado UTF-8 válido (incluindo o BOM e ele abre corretamente no vim), mas parece que o CLIP.EXE não respeita o BOM para alterar a codificação esperada para UTF-8.

Então, como devo dizer ao Windows e / ou CLIP.EXE que esse arquivo é codificado em UTF-8 e tratá-lo adequadamente? (Se outra codificação como UTF-16 ou UTF-32 funcionasse melhor para Unicode, eu poderia usá-la).

O sistema que mostra o comportamento é o Windows 7 e a página de código padrão no CMD.EXE é 850. Preciso que isso funcione em sistemas sobre os quais não tenho controle.

    
por Thorbjørn Ravn Andersen 17.01.2013 / 16:15

1 resposta

4

O UTF-16 funciona para mim, no meu Windows 7 (minha página de códigos OEM ('cmd') é 437, embora não importe).

Como eu testei:

  1. Abra o bloco de notas, digite alguns textos não ASCII (ou copie de algum site com muitos idiomas, como o link
  2. Salvar como, escolha Codificação: Unicode (que significa UTF-16), salve como UTF16.txt
  3. Em cmd, digite clip < UTF16.txt
  4. Abra o novo bloco de notas, cole

Resultado: o texto aparece corretamente.

    
por 17.01.2013 / 17:08