中文文字、java代码、工程均使用UTF-8编码,在Myeclipse控制台中中文显示正常,但是打包后执行则是乱码。。不清楚为什么。。谢谢。
java代码:
- Java code
public class EncodingTest { protected static Logger logger = Logger.getLogger(EncodingTest.class.getName()); /** * @param args */ public static void main(String[] args) { try { String str=new String(("你好").getBytes(),"UTF-8"); logger.info(str); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
Myeclipse控制台中:
打包后执行:
------解决方案--------------------
TOMCAT也要设置为UTF-8
------解决方案--------------------
所有用到的地方,全用uft-8
jf
------解决方案--------------------
String str=new String(("你好").getBytes(),"UTF-8");
应该改成
String str=new String(("你好").getBytes("UTF-8"), "UTF-8");
貌似这样写没有意义吧
------解决方案--------------------
String str=new String(("你好").getBytes(),"UTF-8");
你写成这样,在Eclipse里面运行完正常?
你不是跟我开玩笑吧。
我先给你解释下。
"你好".getBytes()的意思是按照默认的字符集给字符进行编码
一般情况下我们的电脑,默认的都是gbk
new String(byte[],"UTF-8")
的意思是把该字节数组按照规定字符集(这里是UTF-8)解码。
如果,你这个串没进行过任何操作直接输出肯定是乱码。
------解决方案--------------------
String str=new String(("你好").getBytes(),"UTF-8");
这么操作太另类了。
哥们,你需求是啥啊?
------解决方案--------------------
这么操作本身语义就有问题。
手工转码一般都用在,编解码错误的时候。
而"你好"本来就是你想要的串。干嘛还要人工转码啊。
用人工转码的时候是这样的。
就好比,现在有一个非java程序。他向你的程序发送一个字符串,传送前首先需要进行编码。他按gbk编码后给你的java程序。但是你输入流接受的时候却用了iso8859-1进行解码。于是,你看到的串就不是。他发送时候的了。这个时候你才需要new String(getBytes("iso8859-1"),"gbk").这时候才是需要人工转码的时候。
------解决方案--------------------
You could try to generate the .class files directly via the CMD. (reference: http://blog.csdn.net/gaowen_han/article/details/7163775)
To verify that the execution of the compiled file does not appear the irrecognizable codes. And then pack the .class files into .jar file through CMD. (reference: http://blog.csdn.net/gaowen_han/article/details/7246562)
We can do also a small test: run via CMD the class file extracted from the eclipse workspace directory to examine there are no irrecognizable codes.
------解决方案--------------------
是不是设置下系统环境变量哦!估计系统识别不了UTF-8
------解决方案--------------------
utf8是世界通用的
------解决方案--------------------
LZ你那个字符串在控制台能正常显示?你系统编码都是utf-8啊?
------解决方案--------------------
logger.info(str);
日志文件的字符集设置了么?这个也要设置成utf-8,否则就算你是以utf-8保存的,打开后显示的还是乱码
------解决方案--------------------
换台电脑试试,实在找不到问题那就有可能是系统的原因
------解决方案--------------------