public class Language {
ResourceBundle resource;
private Event event;
private Language()
{
this.event=new Event();
}
public Language()
{
this.resource=ResourceBundle.getBundle("zh_CN");
this.event=new Event();
} public String getLocaleString(String field)
{
String value=new String();
try
{
value=new String(resource.getString(field).getBytes("GBK"),"UTF-8");
}
catch(Exception e)
{
event.write(e.getMessage()+" key:"+field);
}
return value;
}
}
zh_CN.properties文件编码为ASCII.已用native2ascii将该文件转为UNICODE内容用UTF-8浏览页面,发现调用 getLocaleString(String field)得到的字符串出现部分字符为乱码,一部分正常,这是什么原因啊?如果将上述
value=new String(resource.getString(field).getBytes("GBK"),"UTF-8");[/code]
中的转码过程去掉,改为
value=resource.getString(field);
用GBK方式浏览一切就正常。但我的目的是希望能在UTF8的编码方式浏览网页,达到正常显示汉字的效果。被这个问题困扰很久了,一直找不到解决方案。大家帮帮忙啊!小弟先谢了。
ResourceBundle resource;
private Event event;
private Language()
{
this.event=new Event();
}
public Language()
{
this.resource=ResourceBundle.getBundle("zh_CN");
this.event=new Event();
} public String getLocaleString(String field)
{
String value=new String();
try
{
value=new String(resource.getString(field).getBytes("GBK"),"UTF-8");
}
catch(Exception e)
{
event.write(e.getMessage()+" key:"+field);
}
return value;
}
}
zh_CN.properties文件编码为ASCII.已用native2ascii将该文件转为UNICODE内容用UTF-8浏览页面,发现调用 getLocaleString(String field)得到的字符串出现部分字符为乱码,一部分正常,这是什么原因啊?如果将上述
value=new String(resource.getString(field).getBytes("GBK"),"UTF-8");[/code]
中的转码过程去掉,改为
value=resource.getString(field);
用GBK方式浏览一切就正常。但我的目的是希望能在UTF8的编码方式浏览网页,达到正常显示汉字的效果。被这个问题困扰很久了,一直找不到解决方案。大家帮帮忙啊!小弟先谢了。
解决方案 »
- 请求包和响应包都以XML格式
- JSF控件 selectInputDate的问题
- 求救:liferay6的文章发布到底在哪啊?
- hibernate中如何配置SqlServer2005?
- Hibernate的问题
- 我是新手,一个很简单的问题!!!!
- 求助!为何Thread.sleep会有问题
- 自己的想法
- 两个servlet的传递参数问题
- EJB的好书,请推荐,我看了<精通EJB2.0>,好薄哟!!
- axis2 ,在WEB应用中访问另一个WEB应用报错
- 有关org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 的问题
在servlet中设置下request.setCharacterEncoding("UTF-8"); 或response.setCharacterEncoding("UTF-8");
你试试
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
当调整浏览器的编码为GBK以后就可以正常显示。但是其它UTF8格式的文本就不能正常显示了。
JSP文件中的<%@ page language="java" contentType="text/html; pageEncoding="UTF-8"%>
在该页面中,还从其它UTF8文件中调用了部分的文字。在UTF8编码浏览是正常的。
从资源文件读出的字符在同样UTF8编码情况下不能正常显示。我于是把读出的字符转码,结果出现部分字符是乱码,问题等。如果不转码。在浏览的情况下,通过改变浏览器的编码为gbk从资源文件中读出的文字是正常的。从其它utf8文件中调用的文字却不能正常显示。
v是从资源文件中读取出来的字符串
new String(v.getBytes("GBK"))
返回的是正常显示的字符.
new String(v.getBytes("GBK"),"UTF-8")
返回的是大部分正常显示,个别乱码的字符.从资源文件中读出的字符串为什么是gbk的呢
是GB18030,与GBK是兼容的,Java在读取文件时是按平台的默认字符
编码来读取的。
在转成abc_zh_CN.properties之前的temp.properties
的编码格式要是GBK的,不能是UTF-8的,转码时只要采用:native2ascii temp.properties abc_zh_CN.properties 就可以了。另外,在读取资源时直接使用 resource.getString(field) 就行,不需要转码。还有,资源载入时,采用 ResourceBundle.getBundle("包名.abc"); 就可以了。你再试试看,我的测试是成功的。
转为UTF-8之后还是显示的不正常,部分字符乱码。login.verifycode.caption=\u9644\u52a0\u7801这是用native2ascii转码后的结果resource.getString("login.verifycode.caption")返回的是'附加码',但是不能在UTF-8编码正常浏览。要把浏览器的编码设置为gbk,才能正常显示。所以我得把它转成UTF-8的。转完后在UTF8编码下可以显示。但是不正常:'附加�?'
只要文件本身的编码,文件内容编码、native2ascii的encoding=UTF-8
可以避免这个问题,你的这个问题的原因是:编码的源文件文件本身编码不是UTF-8,所以导致了部分正确,部分乱吗的问题