2016-07-06 82 views
0

我對所有歐洲國家以及日本,中國,韓國等少數幾個亞洲國家都有Unicode字符。除了日本,中國,韓國以外,所有Unicodes都適用於歐洲國家。不適用於日文,中文和韓文的字符編碼

舉例日本:

爲中國
dear_name=\u30c7\u30a3\u30fc\u30e9\u30fc 

舉例:

dear_name=\u4eb2\u7231\u7684 

舉例韓國:

dear_name=\uce5c\uc560\ud558\ub294 

舉例瑞典(這個是工作的罰款):

dear_name=Till 

默認字符編碼是UTF-8。

Template template = VelocityFactory.getTemplate("test.vm", "UTF-8"); 
    String messageText = VelocityFactory.merge(context, template, charset); 

在調試合併方法時,我發現合併的結果在中文,日文,韓文這裏已經變成了grabled。

public static String merge(VelocityContext context, Template template, String charset) throws Exception { 

     String newResult = null; 

     ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); 
     OutputStreamWriter streamWriter; 
     if(charset != null && charset.length() > 0) { 
      streamWriter = new OutputStreamWriter(outputStream, charset); 
     } else { 
      streamWriter = new OutputStreamWriter(outputStream); 
     } 

     template.merge(context, streamWriter); 
     streamWriter.close(); 

     mergedResult = outputStream.toString();     
     outputStream.close(); 

     return newResult;   
    } 
} 

以下是郵件模板,只爲報頭是在日本,中國和韓國的正確格式顯示,而不是身體:

<html> 
    <head>  
     <meta http-equiv="Content-Type" content="$contentType"> 
    </head> 
    <body> 
     <div id="content"> 
      <table border="0" cellpadding="0" cellspacing="0" style="margin-left: 0px;"> 
       <tr> 
        <td> 
         <table border="0" cellpadding="0" cellspacing="0" class="textBody" style="margin-bottom: 120px;"> 
          <tr> 
           <td valign="bottom" class="mainHeader" nowrap> 
            $velocityUtils.getMessage("test") 
           </td> 
          </tr> 
          <tr> 
           <td colspan="2"> 
            <img src="$imageBar" class="clipped"> 
           </td> 
          </tr> 
         </table> 
         <div id="info" class="textBody">$velocityUtils.getMessage("test1")<br><br></div>  
        </td> 
       </tr> 
      </table> 
     </div> 
    </body> 
</html> 

的任何信息,如何解決這一問題?我如何正確編碼?

回答

0

嘗試添加給你的JSP

<%@ page language="java" pageEncoding="UTF-8"%> 
+0

它不是一個jsp page.It是虛擬機文件。 – Subham

+0

儘管相同的要求,看看http://forum.spring.io/forum/spring-projects/web/64372-setting-content-encoding-in-velocity –

0

的頂部,你需要爲指定字符集日本,韓國和中國

For japanese try: charset=iso-2022-jp 
For korean try: charset=iso-2022-kr 
For chinese try: charset=big5 
+0

謝謝..我只有在發送時才發送此問題電子郵件給用戶,那裏也標題部分正確顯示所有的亞洲語言,但身體得到grabled – Subham

+0

電子郵件客戶端使用標題中定義的內容類型,而不是在元標記.... 所以你最安全的賭注是將身體內容即所有特殊字符轉換爲它們的HTML實體,您不必再擔心頭部Content-Type ... 使用在線轉換器工具來轉換您的內容>>> [示例轉換工具](https://www.emailonacid.com/character-converter) – coolstoner

相關問題