问题描述:
最近在使用SSI写练习代码时,遇到了使用struts2的<s:actionmessage/>获取properties配置文件里的提示消息时,出现了乱码问题。查找了好久,才发现是配置文件编码格式的问题。properties默认的编码格式是ISO-8859-1,而我的Myeclipse里的properties文件由于公司项目的原因,把默认的的编码格式修改成了utf-8,导致乱码问题。
解决办法:
1、不要修改properties配置文件的默认的编码格式ISO-8859-1,在页面即可接到不乱码的中文提示。
获取消息,并弹出提示
<s:if test="hasActionErrors()">
<s:iterator value="actionErrors" var="msg" begin="0" end="0">
<script>
alert("<s:property value='#msg'/>");
</script>
</s:iterator>
</s:if>
<s:if test="hasActionMessages()">
<s:iterator value="actionMessages" var="msg" begin="0" end="0">
<script>
alert("<s:property value='#msg'/>");
</script>
</s:iterator>
</s:if>
<s:if test="hasFieldErrors()">
<s:iterator value="fieldErrors" var="msg" begin="0" end="0">
<script>
alert("<s:property value='#msg'/>");
</script>
</s:iterator>
</s:if>
2、properties配置文件的编码格式是utf-8,在页面接受消息时,进行转码操作。
Collection actionMessages = (Collection) request.getAttribute("actionMessages");
if (actionMessages != null) {
Iterator iter2 = actionMessages.iterator();
if (iter2.hasNext()) {
String mess = (String) iter2.next();
mess = new String(mess.getBytes("iso-8859-1"), "utf-8");
out.write("alert('" + mess + "');");
}
}