Solucionado (ver solução)
Solucionado
(ver solução)
11
respostas

Código compilado não está em UTF8 no windowns

Após a compilação do primeiro programa demonstrado em aula utilizando o GCC, os caracteres especiais ficam todos desconfigurados, existe alguma configuração na prompt do windows ou alguma biblioteca do C que deva ser importada?

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
11 respostas

Oi Thiago, que editor você usou para editar seu código? Este problema em geral surge porque seu arquivo não está salvo com encoding utf-8 antes da compilação.

Veja se consegue alterar a codificação do próprio arquivo de código.

Estou utilizando o Sublime Text 3, eu preciso configurar algo para que funcione?

Nao lembro de cabeça onde fica a configuração pra salvar com encoding padrão, mas acho que o Sublime vem configurado pra usar UTF 8.

Pode tentar clicar em arquivo -> salvar com encoding -> UTF-8. Aí você apaga e reescreve alguns caracteres especiais, recompila e confere as mudanças.

Se isso não funcionar terei que fazer alguns testes à parte aqui.

Bom, fiz o que você disse mas o programa ainda continua com problemas nos caracteres especiais.

Thiago, um colega me apontou que o problema pode ser o uso do Windows em conjunto com o encoding em UTF-8. Dei uma pesquisada e encontrei alguns relatos de que o console do Windows realmente tem suporte bem limitado a este encoding.

Que versão do Windows vc está usando? Tem o PowerShell disponível? Tente compilar e rodar seu programa usando o PowerShell ao invés do prompt pra ver se tem alguma diferença.

Se não, posso indicar alguns posts do StackOverflow (ou traduzi-los pra cá) que dão soluções paliativas, mas não adequadas.

Se nada funcionar, talvez o mais adequado seja você utilizar UTF-16 que é melhor suportado no console do Windows.

Já vou indicar aqui as postagens que encontrei sobre o assunto que mais me esclareceram:

Estou utilizando o Windows 10, compilei e executei meu programa através do powershell, porém não tive sucesso.

solução!

Talvez então só possa recorrer às soluções menos ortodoxas que os posts do StackOverflow indicam.

Não é adequado pois se configurado como padrão no seu console pode causar o mesmo bug no restante do sistema, já que este é baseado em outro encoding, mas pelos relatos funciona. Se utilizado uma vez por sessão, o bug só se extende durante a sessão.

Execute o comando chcp 65001 antes de rodar seu programa. Mude também a fonte do seu console para Consolas ou para Lucida Console.

utilizando o comando chcp 65001 os caracteres especiais foram apresentados corretamente. Seria necessário eu implementar algum componente em meu código C para que ele sempre funcione com esse comando?

Não sei de alguma função em C que faça isso. Só encontrei em C++. Depois de uma busca relativamente extensa, começo a achar que não tem uma solução ideal. =(

Bom, ao menos o problema foi contornado (não resolvido)! Marque a resposta que te ajudou como solução e ajude o próximo aluno que tenha a mesma dúvida =)

Muito Obrigado pela ajuda e pelo tempo de dicado a resolver esse problema por hora :D