1. 程式人生 > >關於freemarker靜態化生成html頁面 亂碼的問題

關於freemarker靜態化生成html頁面 亂碼的問題

FreeMarker在生成靜態頁面的時候如果編碼不一致則會產生亂碼,特別是在處理中文的時候,如果不指定相同的編碼,那麼一定會產生中文亂碼,所以在開發當中應該儘量保證編碼一致,以下幾個方面可以避免亂碼:

1. ftl檔案編碼設定

Window->Preferences->Workspace->Text file encoding 
1
配置 Text file encoding為 utf-8,再把相應ftl中文再改一次。

2. FreeMarkerConfigurer配置

<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> 
     <property name="templateLoaderPath" value="/WEB-INF/views"/>          
     <property name="freemarkerSettings">   
     <props>  
         <!-- 設定頁面中文亂碼問題 -->  
         <prop key="default_encoding">UTF-8</prop>
         <!--模板的編碼格式 -->  
         <prop key="locale">UTF-8</prop>
         <!-- 本地化設定 -->  
         <prop key="url_escaping_charset">UTF-8</prop>  
         <!--  其他配置 -->
          ...... 
     </props>
        </property>   
        <property name="templateLoaderPath">  
           <value>WEB-INF/FTL/</value> 
        </property>
</bean>

3. FreeMarkerViewResolver配置

<bean id="freemarkerResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> 
               <!-- 設定頁面中文亂碼問題 -->  
             <property name="contentType" value="text/html;charset=UTF-8"/> 
              <!--  其他配置 -->  
    ......
</bean>

4. ftl檔案編碼設定

<html>
<head>
    <!-- flt模板裡面已經要加入這行,不然一定會產生中文亂碼。-->
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
hello你好${name}
</body>
</html>