Freemarker utf-8 encoding problems on t.page

14,311

Solution 1

Since the accents were all right in the inserted variables, yet the accents entered directly into the templates weren't, and the browser seems to know that the page uses UTF-8 (that you can check in the page information dialog of the browser), either:

  • The template file was saved with the wrong encoding. In Eclipse, you should go to Window -> Preferences -> Workspace, and set text file encoding to UTF-8. This is a global setting, but by default Eclipse uses the platform default, which doesn't make sense in 99% of the projects. You can also set this on project level under Project -> Properties -> Resource.

  • FreeMarker has used wrong charset to decode the template files, as it also uses the platform default by default. So you should set the default_encoding setting to UTF-8. You can also force the encoding in the template with <#ftl encoding='UTF-8'>.

Solution 2

how about if you add this charset="UTF-8"

<label charset="UTF-8" >Usuário:</label>

in HTML 5 you would add:

<meta charset="UTF-8">

in previous HTML (notice you have lower case in your code..maybe that might be contributing to it)

<meta http-equiv="Content-type" content="text/html;charset=UTF-8">

Solution 3

I found the solution. I need to create the login.html file again, using dreamweaver, then save as html and paste the file on the eclipse project.

Share:
14,311

Related videos on Youtube

claudioivp
Author by

claudioivp

Updated on June 25, 2022

Comments

  • claudioivp
    claudioivp almost 2 years

    I'm having problems with inside pages. It simply are recognizing pages as iso, but I want utf-8, I'm declaring it as default charset. I tried some modifications on freemarker configuration, but they are not having effect.

    spring-servlet.xml

    <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <property name="templateLoaderPath" value="/WEB-INF/pages/"/>
    </bean>
    

    template.html

    <#macro page>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Cemitério - Prefeitura Municipal de Maringá</title>
    </head>
    
    <body>
    Usuários
    <#nested/>
    </body>
    </html>
    </#macro>
    

    login.html

    <#import "templates/template.html" as t/>
    
    <@t.page>
    
    <#if erroLogin??>
        ${erroLogin}
    </#if>
    <form action="entrar" method="post">
        <div>
            <label>Usuário:</label>
            <input type="text" name="usuario" />
            <br />
            <label>Senha:</label>
            <input type="text" name="senha" />
            <br />
            <input type="submit" name="submit" />
        </div>
    </form>
    
    </@t.page>
    

    output

    enter image description here

  • grepit
    grepit about 11 years
    how about this <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"> ... according to this site (w3schools.com/tags/ref_charactersets.asp) The first 256 characters of Unicode character-sets correspond to the 256 characters of ISO-8859-1. this may not be a best solution but may at least some kind of workaround
  • claudioivp
    claudioivp about 11 years
    And it's funny, because the bean content ${user.name} that is called inside <@t.page>... </@t.page> print the accents correctly...
  • ddekany
    ddekany about 11 years
    Just set the default encoding to UTF-8 in Eclipse. It uses the platform default otherwise...
  • claudioivp
    claudioivp about 11 years
    Please, post this as a answer. ;)