在网上看了很多关于多语言的支持,这里讨论的是关于jstl对多语言的支持,网上有解决方案如下,
1. 将messages_zh_CN.properties转换成UTF-8编码.
2. 加jsp指令contentType="text/html;charset=UTF-8"
3. 使用如下标记<fmt:message key="reload"/>我按照这个做完后,发现一个问题是,jsp本身的中文字符在客户端能够正确的显示,但是,在messages_zh_CN.properties里的中文字符却是不能正常显示然后,我找到了standard.jar的源代码,看了一下源代码,发现,似乎它本身就是不能支持中文,理由如下,
1. 请看下列的源代码在MessageSupport.java, 为了简化,我省略了一些步骤,
response.setContentType("text/html;charset=UTF-8");
ResourceBundle bundle = locCtxt.getResourceBundle();
message = bundle.getString(key);
pageContext.getOut().print(message);
2. 这也就是说,在messages.properties中UTF-8的字符数据通过ResourceBundle取进程序后,编码成了ISO8859-1的字符,然后,这个字符又被转换成了相应的UTF-8的字符发送到了客户端,所以,到了客户端看到的是乱码,例如,
中国(UTF-8) --->> 中国(ISO8859-1) --->> 中国(UTF-8)解决问题的思路应该是让jstl以正确的编码进行解析这个资源文件, 本例子中是UTF-8.我的问题是,
1. 如何告诉jstl去用UTF-8编码去读这个资源文件?我查了所有的标签,没有相关的属性.
2. jstl的国际化机制是基于ResourceBundle,ResorceBundle是基于Stream, 也不能制定字符编码
3. 为什么ResourceBundle不基于Reader And Writer, 这样,创建的时候就可以指定字符编码,以用来取不同编码的数据了,而不是仅仅ISO8859-1
4. 如果真的是他们天生就不支持中文,那么,我们用什么好办法实现呢,难道要做如下转换,
我们去ResourceBundle取的每个数据都要这样转化
String sValue = resouceBundle.getString("key");
sValue = new String(sValue.getBytes(8859-1), "UTF-8"); 而对于jstl我们需要自己习俗话一个标签,把上面代码加进去?请高手指点,谢谢
1. 将messages_zh_CN.properties转换成UTF-8编码.
2. 加jsp指令contentType="text/html;charset=UTF-8"
3. 使用如下标记<fmt:message key="reload"/>我按照这个做完后,发现一个问题是,jsp本身的中文字符在客户端能够正确的显示,但是,在messages_zh_CN.properties里的中文字符却是不能正常显示然后,我找到了standard.jar的源代码,看了一下源代码,发现,似乎它本身就是不能支持中文,理由如下,
1. 请看下列的源代码在MessageSupport.java, 为了简化,我省略了一些步骤,
response.setContentType("text/html;charset=UTF-8");
ResourceBundle bundle = locCtxt.getResourceBundle();
message = bundle.getString(key);
pageContext.getOut().print(message);
2. 这也就是说,在messages.properties中UTF-8的字符数据通过ResourceBundle取进程序后,编码成了ISO8859-1的字符,然后,这个字符又被转换成了相应的UTF-8的字符发送到了客户端,所以,到了客户端看到的是乱码,例如,
中国(UTF-8) --->> 中国(ISO8859-1) --->> 中国(UTF-8)解决问题的思路应该是让jstl以正确的编码进行解析这个资源文件, 本例子中是UTF-8.我的问题是,
1. 如何告诉jstl去用UTF-8编码去读这个资源文件?我查了所有的标签,没有相关的属性.
2. jstl的国际化机制是基于ResourceBundle,ResorceBundle是基于Stream, 也不能制定字符编码
3. 为什么ResourceBundle不基于Reader And Writer, 这样,创建的时候就可以指定字符编码,以用来取不同编码的数据了,而不是仅仅ISO8859-1
4. 如果真的是他们天生就不支持中文,那么,我们用什么好办法实现呢,难道要做如下转换,
我们去ResourceBundle取的每个数据都要这样转化
String sValue = resouceBundle.getString("key");
sValue = new String(sValue.getBytes(8859-1), "UTF-8"); 而对于jstl我们需要自己习俗话一个标签,把上面代码加进去?请高手指点,谢谢
解决方案 »
- 使用Mybatis Generator自动生成Mybatis相关代码,修改生成xml格式
- SSH学习顺序问题
- 不定期的发布一些群成员的javaWeb项目(非J2EE开发人员莫入, 谢谢合作)
- 如何实现: 用户单击网页上的链接,弹出保存对话框后单击打开,然后修改内容后保存,再单击网页上的上传按钮直接上传附件,而不需要指定路径?
- session在struts中的问题
- Action里面的sendRedirect(url)问题
- tomcat作为WEB服务器时,网址含有中文时,网页不能显示!请问如何解决?谢谢
- weblogic6.1升级到8.1后的问题
- spring struts整合问题,急呀!不知什么错误,快帮下我吧
- 使用struts2和ckfinder时候的报错 求指导啊
- 如何在jsp页面输出信息啊? 大家给我看看 谢谢了
- setObject()问题
URL上传递中文怎么转都不行,因为与tomcat版本有关.其他的转化都可以.
希望对你有帮助....
2. 加jsp指令contentType="text/html;charset=UTF-8"
3. 使用如下标记<fmt:message key="reload"/>--------------------------------------
1。properties文件里面还是不要使用中文好了, 用native2ascii转化一下, 或者
给Eclipse加个Properties Editor
23就是这样吧, 我一般会在web.xml里面定义一个 Filter, 网上找的代码, 进行字符编码转换
zh_CN的文件要用UNICODE编码的形式,需要native2ascii转化一下先.就不会有楼主其他的考虑了