Ich habe Unicode-Zeichen für alle europäischen Länder und für einige asiatische Länder wie Japan, China, Koreanisch. Alle Unicodes funktionieren gut für europäische Länder mit Ausnahme von Japan, China und Korea.Zeichenkodierung funktioniert nicht für Japanisch, Chinesisch und Koreanisch
Beispiel für Japan:
dear_name=\u30c7\u30a3\u30fc\u30e9\u30fc
Beispiel für China:
dear_name=\u4eb2\u7231\u7684
Beispiel für Koreanisch:
dear_name=\uce5c\uc560\ud558\ub294
Beispiel für Schweden (dies funktioniert gut):
dear_name=Till
Die Standardzeichencodierung ist UTF-8.
Template template = VelocityFactory.getTemplate("test.vm", "UTF-8");
String messageText = VelocityFactory.merge(context, template, charset);
Während debuging die merge Methode, die ich herausgefunden, dass das fusionierte Ergebnis grabled immer hier selbst für Chinesisch, Japanisch, Koreanisch.
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;
}
}
Unten ist die Vorlage Mail und nur für Kopf in richtigen Format für Japanisch, Chinesisch es angezeigt wird, und Koreanisch, aber nicht für den Körper:
<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>
Alle Informationen, wie dieses Problem beheben? Wie kodiere ich richtig ??
Es angeben müssen, ist kein jsp page.It ist vm Datei . – Subham
Gleiche Voraussetzung, aber schauen Sie sich http://forum.spring.io/forum/spring-projects/web/64372-setting-content-encoding-in-velocity –