9
respostas

[Dúvida] Erro de codificação UTF-8

O VsCode sempre formatou corretamente as strings. No entando, nas áreas de input, ele dá algum erro de reconhecimento e não reconehce acentos. No print("Olá Mundo") ele reconhece normalmente. Mas no Input, quando digito "Olá" ele me retorna "Olã!"

Sugestões de como arrumar? Ja fui nas configurações e defini tudo para o UTF-8 como padrão. Também é o padrão do meu sistema windows!

9 respostas

Oi, tudo bem?

Esse problema que você está enfrentando pode está relacionado ao encoding do terminal, e não ao código Dart ou à configuração de arquivos do VS Code diretamente. Então, mesmo que o VS Code e os arquivos estejam com encoding UTF-8, o terminal (PowerShell) pode estar operando com um code page diferente e causar esse tipo de erro com caracteres acentuados.

Peço que você teste a possível solução:

Digite no terminal antes de rodar seu programa:

chcp 65001

Esse comando muda a página de código do terminal para UTF-8. Depois disso, rode novamente seu programa com:

dart run

Agora veja se o stdin.readLineSync() reconhece corretamente os acentos.

Espero ter que funcione!

Qualquer dúvida que surgir, compartilhe no fórum.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Infelizmente não funcionou. Já tenho um codigo para deixar o terminal roadando no 65001. O problema persiste.

Oi!

Obrigada pelas informações e print compartilhado! O problema pode estar ligado ao tipo de terminal que o VS Code está usando por padrão. Então, peço que agora tente trocar o terminal.

Siga os passos abaixo:

  1. Altere o terminal padrão no VS Code para o Git Bash ou outro terminal que não seja Power Shell.

  2. Para isso, pressione Ctrl + Shift + P, digite Terminal: Select Default Profile e escolha Git Bash ou outro.

  3. Reinicie o terminal e execute novamente seu programa com:

    
     dart run
     
  4. Digite acentos no input e veja se agora aparecem corretamente.

Se não tiver Git Bash instalado, pode baixá-lo no site aqui

Fico à disposição!

Infelizmente não funcionou também ... Realmente nn entendo oq aconteceu aqui. Só funciona quando eu coloco de forma explícita o encoding dentro do meu input. (eg.: stdin.readLineSync(encoding: utf8)) -- Quando uso um "print()" ele sai normalmente no terminal sem necessidade do encoding.

Também estou com o mesmo problema, porém ao invés de aparecer com a acentuação diferente ele simplesmente exclui a letra, por exemplo eu digito "Olá" e na saída recebo "Ol", e quando a acentuação é no print funciona normalmente, testei também as duas soluções propostas nesse comentário mas o problema persiste

Oi, Estudante e Isadora!

Isadora, vi que você criou um tópico! O seu atendimento continuará por lá.

Estudante, como você mencionou que já definiu o UTF-8 como padrão no Windows, vamos agora avançar com uma nova tentativa de configuração para garantir que o PowerShell esteja utilizando a codificação correta.

No terminal do PowerShell, digite:

$PROFILE

Esse comando mostrará o caminho do seu arquivo de perfil do PowerShell. É nele que vamos aplicar a configuração. O resultado será algo semelhante a:

C:\Users\SeuUsuario\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

Em seguida, abra esse arquivo com o seguinte comando:

notepad $PROFILE

No arquivo que for aberto, cole o conteúdo abaixo no final:

$OutputEncoding = [System.Text.UTF8Encoding]::new()
[Console]::InputEncoding = [System.Text.UTF8Encoding]::new()
[Console]::OutputEncoding = [System.Text.UTF8Encoding]::new()

Salve e feche o Bloco de Notas.

Agora, feche e reabra o terminal do VS Code (ou o próprio PowerShell).

Por fim, para verificar se a codificação foi aplicada corretamente, digite o seguinte comando:

[Console]::OutputEncoding

Se tudo estiver certo, a saída indicará que a codificação está como UTF-8.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Estudante, caso em alguma etapa surja algum erro. Por favor, me retorne os passos que realizou e o print com a mensagem de erro.

Fico à disposição!

Quando rodo o comando "notepad $PROFILE" no PowerShell aparece esse erro da foto Insira aqui a descrição dessa imagem para ajudar na acessibilidade , tentei proseguir ignorando a mensagem de erro mas não deu certo

Consegui resolver o erro da foto anterior utilizando o chatgpt e obtive a mesma saida da foto que você mandou por ultimo, que deveria aparecer se tivesse dado certo, porém o problema persiste com a acentuação e já reiniciei o computador

Oi Isadora!

Te respondi neste seu outro tópico, continuaremos o atendimento por lá!