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?
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?
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.
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