在网上看了很多关于多语言的支持,这里讨论的是关于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) --->> &auml;&cedil;&shy;&aring;&#155;&frac12;(ISO8859-1) --->>  &auml;&cedil;&shy;&aring;&#155;&frac12;(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.   

    我曾经在这个方面费了很多周折,我总结如下:
    URL上传递中文怎么转都不行,因为与tomcat版本有关.其他的转化都可以.
      

  2.   

    楼上的兄弟,我讨论的不是URL上传的乱麻啊,我讨论的是放在资源文件里的中文和jsp页面里本身的中文问题,呵呵
      

  3.   

    http://community.csdn.net/Expert/topic/5238/5238411.xml?temp=.8276026
    希望对你有帮助....
      

  4.   

    1. 将messages_zh_CN.properties转换成UTF-8编码.
    2. 加jsp指令contentType="text/html;charset=UTF-8"
    3. 使用如下标记<fmt:message key="reload"/>--------------------------------------
    1。properties文件里面还是不要使用中文好了, 用native2ascii转化一下, 或者
    给Eclipse加个Properties Editor
    23就是这样吧, 我一般会在web.xml里面定义一个 Filter, 网上找的代码, 进行字符编码转换
      

  5.   

    顶楼上的
    zh_CN的文件要用UNICODE编码的形式,需要native2ascii转化一下先.就不会有楼主其他的考虑了