Posso escrever um programa de console que funcione com várias codificações de caracteres? [duplicado]

1

Estou escrevendo um programa de console em C.

Espero que o Terminal em que meu programa esteja executando tenha sua codificação de caracteres definida como UTF-8. Isso significa que estou enviando strings codificadas em UTF-8 para o Terminal e esperando receber strings codificadas em UTF-8 do Terminal.

Mas se o Terminal tiver sido configurado para outra codificação de caracteres (diferente de UTF-8) enquanto meu programa estiver em execução, meu programa deixará de funcionar conforme o esperado.

Então, existe uma maneira de saber em qual codificação de caracteres o Terminal está configurado no meu programa (para que eu possa alterar o comportamento do meu programa)? E mesmo que haja tal forma, eu deveria me preocupar em fazer meu programa funcionar com múltiplas codificações de caracteres, ou é o suficiente para fazê-lo funcionar apenas com o UTF-8?

    
por user294241 06.06.2018 / 12:12

1 resposta

-4

O UTF-8 tem várias armadilhas e, por essa razão, não é a codificação típica na Europa central.

Escrever programas que assumam UTF-8 é uma prática ruim, pois você pode nem saber onde um "caractere" termina no fluxo de bytes.

Um programa decente chama:

setlocale(LC_ALL, "")

na inicialização e depois usa funções como:

mbtowc(&wc, input, amt)

para converter a entrada multibyte de stdin ou arquivos.

Em seguida, ele processa os dados como caracteres amplos e os converte de volta para dados multibyte por meio de:

wctomc(output, wc)

a saída é impressa, por exemplo, stdout.

    
por 06.06.2018 / 13:04