1.怎样理解struts中<bean:message key="..."/>出现的乱码问题?
2.为什么出现乱码?
3.期间编码是如何转换的?
4.eclipse保存文件的时候是按照什么编码保存的?
5.能不能让浏览器直接显示utf-8编码的文件?
6.既然utf-8能包含中文为什么不直接让utf-8来显示中文?
谢谢
2.为什么出现乱码?
3.期间编码是如何转换的?
4.eclipse保存文件的时候是按照什么编码保存的?
5.能不能让浏览器直接显示utf-8编码的文件?
6.既然utf-8能包含中文为什么不直接让utf-8来显示中文?
谢谢
解决方案 »
- 泛型问题
- 讲教一下这里应该怎么写呀!
- 我怎么样引入一个DispalyTag标签!
- 一个sql2000查询问题,提供思想撒
- 关于论坛的项目 管理员的身份要怎么样才可以体现?
- lucene中关于IndexReader类的问题
- 菜鸟问题,关于jsp与servlet的tomcat配置(在线等)
- Unknown SMTP host的问题
- EJB,XML等问题!
- 求救servlet???????????
- struts + tomcat5.0 报java.lang.illegalArgumentException,救命,在线等
- 求助:jsp 页面table中大约300条数据要提交到后台,页面summmit()无法执行,求解
1. 用java带的那个转换工具将资源文件里的字符转换成unicode,这里的unicode也仅仅是将字符重新用\uxxxx的形式表示,并不是用unicode编码来保存的!
2. java只支持unicode
3. 看1
4. 有设置的,自己找吧
5. 浏览器本身就支持
6. utf-8可以显示中文,对于1的问题,仅仅是给java虚拟机用的。
你先转成utf-8才可以(native2ascii -encoding utf-8 ApplicationResources.properties ApplicationResources.properties)
你可以在cmd下到某个目录(如c:/app)然后native2ascii -encoding utf-8 a.properties b.properties,得到的b.properties中的内容welcome=\u6b22\u8fce\u4f7f\u7528\u4e2d\u56fd\u7535\u4fe1\u865a\u62df\u4f20\u771f\u4e1a\u52a1;
<bean:message key="..."/>就可以正确显示了.
主要问题是把资源文件jdk带的native2ascii工具转换成utf编码格式
楼上的有点问题 应该是
native2ascii -encoding GBK temp.properties application.properties
我今天又重新好好写了一遍,各位老兄帮忙看看吧
我在eclipse中写了下面这个程序:
=====================================================
package fenzten;
import java.io.UnsupportedEncodingException;
public class EncodingTest {
public static void main(String args[]){
String str="中文";
try {
byte[] bt1=str.getBytes("iso8859-1");
byte[] bt2=str.getBytes("gb2312");
byte[] bt3=str.getBytes("utf-8");
byte[] bt4=str.getBytes("unicode");
System.out.println(bt1);
System.out.println(bt2);
System.out.println(bt3);
System.out.println(bt4);
System.out.println(new String(bt1,"gb2312"));
System.out.println(new String(bt2,"gb2312"));
System.out.println(new String(bt3,"gb2312"));
System.out.println(new String(bt4,"gb2312"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
==============================================================
程序得到的结果是:
=====================
[B@1a46e30
[B@3e25a5
[B@19821f
[B@addbf1
??
中文
涓????
??-N?e
======================
我的问题是:为什么str.getBytes("iso8859-1")得到的是“[B@1a46e30”?
有一篇文章是这样写的:
==============================================
......
在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是"d6d0 cec4",Unicode编码为"4e2d 6587",UTF编码就是"e4b8ad e69687"。注意,这两个字没有iso8859-1编码,但可以用iso8859-1编码来"表示"。
......3.1. getBytes(charset)这是java字符串处理的一个标准函数,其作用是将字符串所表示的字符按照charset编码,并以字节方式表示。注意字符串在java内存中总是按unicode编码存储的。比如"中文",正常情况下(即没有错误的时候)存储为"4e2d 6587",如果charset为"gbk",则被编码为"d6d0 cec4",然后返回字节"d6 d0 ce c4"。如果charset为"utf8"则最后是"e4 b8 ad e6 96 87"。如果是"iso8859-1",则由于无法编码,最后返回 "3f 3f"(两个问号)。
==============================================
这篇文章的链接:http://china.eceel.com/article/study_for_character_encoding_java.htm
为什么我得到的结果是这样的?
还有,我看到jsp中经常用到这样一段代码:
====================================================
public String chStr(String str){
if(str==null){
str="";
}else{
try{
str=(new String(str.getBytes("iso-8859-1"),"GB2312")).trim();
}catch(Exception e){
e.printStackTrace(System.err);
}
}
return str;
}
======================================================
它这样先用getBytes("iso-8859-1"),再转成gb2312是对的,为什么我这样是错的?
另外,我的eclipse的text file encoding设的是utf-8,把ApplicationResources.properties的text file encoding也设的是utf-8,为什么还是出来乱码?
我用了native2ascii好像也不行,像我这种情况得怎么写这句命令?
谢谢
还是指把utf-8编码的temp.properties转换成gbk编码的application.properties?
被编码搞晕了.....
我的eclipse的text file encoding设的是utf-8,把ApplicationResources.properties的text file encoding也设的是utf-8,这样的话我写的ApplicationResources.properties应该是utf-8编码的吧,如果还要转换成gbk的话何不直接把text file encoding改成gbk?
大侠们,救命.....