Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Caracteres especiais não visualizados no navegador

Todos os procedimentos estão corretos até agora, porém, mesmo com o uso do Bootstrap, não estou conseguindo visualizar letras com acentor e nem o 'Ç'. Será que está faltando alguma biblioteca ou é um problema com o uso do Scala?

4 respostas

Oi Victor, tudo bem?

Esse problemas geralmente são por conta do charset da página.

Para uma resposta HTTP baseada em texto, é muito importante definir o charset. O Play manipula isso para você e usa o utf-8 por padrão.

Exemplo para mudar o charset:

public Result index() {
    return ok("<h1>Hello World!</h1>", "iso-8859-1").as("text/html; charset=iso-8859-1");
}

Ok. Mas como vou conseguir configurar isso aqui:

@(formulario: Form[Produto])

@import b3.vertical.fieldConstructor

@main("Cadastro de produto") {
    @b3.form(routes.ProdutoController.salvaNovoProduto){
        <h1>Cadastrar novo produto</h1>
        @b3.text(formulario("titulo"), '_label -> "Título")

        @b3.text(formulario("codigo"), '_label -> "Código")

        @b3.text(formulario("tipo"), '_label -> "Tipo")

        @b3.textarea(formulario("descricao"), '_label -> "Descrição")

        @b3.number(formulario("preco"), '_label -> "Preço")

        @b3.submit('class -> "btn btn-primary") { Cadastrar }
    }
}

na opção Descrição e Preço, por exemplo. Ou devo mudar algo no main?

@(title: String)(content: Html)
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>@title</title>
        <meta name="viewport" content="width=device-width, initial-scale=1"> 
        <link rel="stylesheet" media="screen" href="@routes.Assets.versioned("bootstrap/dist/css/bootstrap.min.css")">
        <link rel="shortcut icon" type="image/png" href="@routes.Assets.versioned("images/cna.png")">
    </head>
<body>
    <header class="navbar navbar-default">
        <div class="container" role="presentation">
            <ul class="nav navbar-nav navbar-right">
                <li><a href="@routes.ProdutoController.formularioNovoProduto">Novo produto</a></li>
            </ul>
        </div>
    </header>
    <main class="container">
        @content
    </main>
    <script type="text/javascript" src="@routes.Assets.versioned("bootstrap/dist/js/bootstrap.min.js")"></script>
</body>
</html>

Para exibir uma página HTML o navegador precisa saber o conjunto de caracteres usado na página.

Isso é especificado com a tag :

<meta charset="iso-8859-1">

Dentro da sua tag head:

    <head>
        <title>@title</title>
    <meta charset="iso-8859-1">
        <meta name="viewport" content="width=device-width, initial-scale=1"> 
        <link rel="stylesheet" media="screen" href="@routes.Assets.versioned("bootstrap/dist/css/bootstrap.min.css")">
        <link rel="shortcut icon" type="image/png" href="@routes.Assets.versioned("images/cna.png")">
    </head>

Infelizmente não funcionou. Continuo vendo " � " aonde deveria estar um " é " ou um " ç ". No meu Meta eu já tinha feito a mesma alteração. Até usei esse exemplo que vi online e nada.

<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">

O que deve estar errado então?