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

Acentuação gráfica no Vscode

Boa noite,

Eu estou com um problema de acentuação no Vscode, estou no Windows 10 e utilizando o compilador GCC, já utilizei a bibloteca local-h, colocando o setlocal depois do main e ainda mesmo assim não funciona.

Código:

#include<stdio.h> // Uma bibloteca do C //#include<locale.h>

int main() {

// imprime cabecalho do nosso jogo
//setlocale(LC_ALL,"portuguese-brazilian");
printf("****************************************\n" );
printf("* Bem vindo ao nosso jogo de adivinhação *\n");
printf("****************************************\n"); // \n quebralinha

//variaveis
//int numerosecreto = 42;
//int chute;

//printf("Qual é o seu chute? ");
//scanf("%d", &chute);   // para ler no teclado
//printf("Seu chute foi %d", chute);

}

Resultado :


  • Bem vindo ao nosso jogo de adivinha├º├úo *

4 respostas

Olá João, tudo bem com você?

Normalmente isso ocorre porque por mais que o nosso código esteja com o locale correto, o nosso terminal por padrão tem um codificação que não contém esses dígitos ( o padrão acredito que é o 850(Latin I)

Para solucionar esse problema, o que podemos fazer é mudar a codificação do terminal para UTF-8 digitando:

chcp 65001

Dessa maneira o nosso terminal agora terá os símbolos especiais, quando utilizarmos o:

    setlocale(LC_ALL, "Portuguese");

Apenas uma observação é que essa modificação de codificação do terminal só é valido pela sessão, então sempre que abrir o terminal será necessário digitar novamente esse comando!

Abraços e Bons Estudos :)

Boa tarde Geovani, tudo sim e com tu?

Então, eu já fiz isso também que você falou, e eu entendi o porque do problema, e mesmo assim ainda continuou e eu achei uma solução aqui mesmo na Alura nesse link:

https://cursos.alura.com.br/forum/topico-windows-e-palavras-com-acentuacao-61327

Só que me gerou uma outra dúvida, fazendo isso ele funcionou sabe só que eu não sei se eu preciso toda vez colocar mais esse pedaço de código para compilar, eu até acho isso meio ruim e a outra é que se eu abrir um novo arquivo e compilar ele funciona, kkkk! Ai eu queria entender porque, não seria por sessão não a compilação?

Opa tranquilo João,

Que estranho, esse código que você mandou está basicamente fazendo a mesma coisa, a única coisa é que esta fazendo via o código, dado que isso funcionou era para funcionar corretamente os passos que eu citei

só que eu não sei se eu preciso toda vez colocar mais esse pedaço de código para compilar

Então, nesses casos, em cada programa em C você tera que fazer isso dado que a codificação do terminal utiliza caracteres diferentes

novo arquivo e compilar ele funciona, kkkk! Ai eu queria entender porque, não seria por sessão não a compilação?

Eu não entendi muito bem, se você criar um outro programa e compilar, depois de rodar esse primeiro, está funcionando normalmente os caracteres especiais?

Se for isso é estranho também, pois no código que você mandou:

  SetConsoleOutputCP(CPAGE_DEFAULT);

Essa última linha era para voltar a codificação do terminal para o modo normal

Uma outra coisa que eu pensei que você pode estar utilizando para evitar esse código que você me mandou é utilizar o segundo terminal do Windows, o Powershell, pelo que eu vi, a partir da versão 6 dele o padrão é UTF-8, e ele já vem instalado no sistema operacional, então pode ser uma outra alternativa, ai só precisaríamos do setLocale mesmo :)

Abraços e Bons Estudos!

solução!

Então, ele está funcionando os caracteres e tudo. Mesmo eu criando um outro arquivo ele funciona, agora eu estou com o problema para compilar no terminal do vscode, irei utilizar mesmo novo do Windows para ver, se não irei para o Linux mesmo.

Muito obrigado pela ajuda Geovani, abraço!