J'ai des caractères Unicode pour tous les pays européens et pour quelques pays asiatiques comme le Japon, la Chine, le coréen. Tous les Unicodes fonctionnent bien pour les pays européens à l'exception du Japon, de la Chine et du Coréen.Caractère encodage ne fonctionne pas pour le japonais, chinois et coréen
Exemple pour le Japon:
dear_name=\u30c7\u30a3\u30fc\u30e9\u30fc
Exemple pour la Chine:
dear_name=\u4eb2\u7231\u7684
Exemple pour le coréen:
dear_name=\uce5c\uc560\ud558\ub294
Exemple pour la Suède (celui-ci fonctionne bien):
dear_name=Till
Le codage de caractères par défaut est UTF-8.
Template template = VelocityFactory.getTemplate("test.vm", "UTF-8");
String messageText = VelocityFactory.merge(context, template, charset);
Alors que debug la méthode de fusion, j'ai découvert que le résultat de la fusion est de se grabled ici lui-même pour chinois, japonais, coréen.
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;
}
}
est en dessous du modèle de courrier et uniquement pour en-tête, il affiche en format correct pour le japonais, le chinois et le coréen, mais pas pour le corps:
<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>
Toute information comment résoudre ce problème? Comment encoder correctement ??
Il n'est pas un page.It jsp est fichier vm . – Subham
Même exigence cependant, jetez un oeil à http://forum.spring.io/forum/spring-projects/web/64372-setting-content-encoding-in-velocity –