Charset.defaultCharset()是根据什么得到的? 很奇怪,写个测试的Application执行结果是UTF-8,放到Struts2的Action里执行就变GBK了。Charset.defaultCharset()到底是根据什么得到的?可不可以设置defaultCharset?请大侠们瞧瞧。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.javaeye.com/topic/311583 这个我看过了,没有解决我的问题。按照官方文档所说,defaultCharset是根据JVM和底层环境得到。我的问题是,同一台机器同一个JVM为什么defaultCharset结果不同?也许有其它因素导致结果不同(Application和web程序环境确实存在不一样),如果可以更改此默认值如何更改,请高人解答。 Properties props = System.getProperties();System.out.println(props.get("file.encoding"));props.put("file.encoding","utf-8");System.out.println(props.get("file.encoding")); 改变Properties的file.encoding属性不会影响Charset.defaultCharset(),而defaultCharset关系到new String(byte[] b)的默认编码。如果没有改变defaultCharset的方法,就只能new String(byte[] b, "UTF-8")了。 跟java虚拟机环境有关系,可不可以修改local不知道,但是可以设置自己的。 defaultCharset是根据Java源文件的文件编码而来的。如果你的Java源文件自身的编码是GBK,则defaultCharset就是GBK;如果Java源文件自身的编码是UTF-8,则defaultCharset就是UTF-8。===========另外,编写与字符集相关的程序时,最好不要使用defaultCharset。因为Java源文件的编码与你要处理的字符编码可能不是同一种编码。byte[] bytes = ... ;String str = new String(bytes, Charset.forName("UTF-8"));如上例,使用明确的字符集编码比defaultCharset要清晰得多! 跟源文件有关我也考虑过,对于Application确实是如此。可我的web程序源文件编码也是UTF-8,更不可理解的是,在这个web程序里的Application执行结果defaultCharset就是UTF-8,可Action执行结果就是GBK。我觉得可能跟运行环境有关。 public static Charset defaultCharset()返回此 Java 虚拟机的默认 charset。默认 charset 在虚拟机启动时决定,通常根据语言环境和基础操作系统的 charset 来确定。 想知道怎么在操作系统里设置改变defaultCharset的?! 一个关于localhost的解析问题? 集成项目用ssh还是ejb架构? 关于事务的小疑问 一个Flex和JEE交互的问题 3年java经验 在北京待遇要多少合适啊 用struts上传文件至tomcat,想保存文件名至mysql 要学Spring了,请问哪本书比较好??? 如何读取XML文件的内容? JMS问题,高手请进!!!(在线等待) 关于在java程序里调用webservice报500返回码的问题 swt界面怎么添加背景图片 S2SH:无效Action配置引用一个未知的类
按照官方文档所说,defaultCharset是根据JVM和底层环境得到。
我的问题是,同一台机器同一个JVM为什么defaultCharset结果不同?
也许有其它因素导致结果不同(Application和web程序环境确实存在不一样),
如果可以更改此默认值如何更改,请高人解答。
System.out.println(props.get("file.encoding"));
props.put("file.encoding","utf-8");
System.out.println(props.get("file.encoding"));
而defaultCharset关系到new String(byte[] b)的默认编码。
如果没有改变defaultCharset的方法,就只能new String(byte[] b, "UTF-8")了。
如果你的Java源文件自身的编码是GBK,则defaultCharset就是GBK;
如果Java源文件自身的编码是UTF-8,则defaultCharset就是UTF-8。===========
另外,编写与字符集相关的程序时,最好不要使用defaultCharset。
因为Java源文件的编码与你要处理的字符编码可能不是同一种编码。byte[] bytes = ... ;
String str = new String(bytes, Charset.forName("UTF-8"));如上例,使用明确的字符集编码比defaultCharset要清晰得多!
可我的web程序源文件编码也是UTF-8,更不可理解的是,在这个web程序里的Application执行结果defaultCharset就是UTF-8,可Action执行结果就是GBK。
我觉得可能跟运行环境有关。
返回此 Java 虚拟机的默认 charset。
默认 charset 在虚拟机启动时决定,通常根据语言环境和基础操作系统的 charset 来确定。