下面这段代码是想生成utf-8的字节流编码,在我自己的机器上运行是可以的,在另外一个同事机器上也行;但是在C同事的机器上运行却始终得到unicode编码的自己流,哪怕是把参数改为GBK,首先请大家看看是不是代码本身有问题,如果不是这个原因,不知道大家有什么好的建议或者原因分析呢?public static void main(String argv[]) { //MessageObject mo = new MessageObject("test.xml"); //String outStr = new String(mo.write2Bytes());
//MessageObject mo = new MessageObject();
try{
File NewFile = new File("e:\\TEST.TXT");
OutputStream tempOutputStream=new FileOutputStream(NewFile);
// OutputStream tempOutputStream = new ByteArrayOutputStream(NewFile);
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(tempOutputStream, "UTF-8"));
bufferedWriter.write("中华人民共和国abc");
bufferedWriter.flush();
bufferedWriter.close();
}catch(Exception ex){
ex.printStackTrace();
}
//String orderByClause = mo.getCommonOrderByClause(); }大家可以把这段代码导进去试试,先谢过了!
//MessageObject mo = new MessageObject();
try{
File NewFile = new File("e:\\TEST.TXT");
OutputStream tempOutputStream=new FileOutputStream(NewFile);
// OutputStream tempOutputStream = new ByteArrayOutputStream(NewFile);
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(tempOutputStream, "UTF-8"));
bufferedWriter.write("中华人民共和国abc");
bufferedWriter.flush();
bufferedWriter.close();
}catch(Exception ex){
ex.printStackTrace();
}
//String orderByClause = mo.getCommonOrderByClause(); }大家可以把这段代码导进去试试,先谢过了!
解决方案 »
- 大神帮看看,为什么repaint()方法没有实现我对组件的重绘
- 问个java的移位问题
- (学JAVA的都进来.........)runtime exception与Compile time error有什么区别!
- 应该用Date还是Calendar?
- applet与servlet进行通讯的问题
- 如何用线程判断时间过去5妙?
- 运行jbuilder出现这个,什么意思啊?
- KeyEvent如何响应中文词组的键盘输入?
- 急急急~~~~~~sl-285的电子书
- 为毛我的jQuery就是没法引入啊
- 跪求js或者java 对sql语句合法行的验证!!!!
- 【求助】程序中如何判断java中的关键字和已定义的类
做的完美一点,要想让每个系统都使用你的编码嘛
一个办法是在运行程序之前,先跑一个设置环境变量的脚本
另外一个办法么写数据的时候先做转码再写,类似这样
String s = new String("中文".getBytes("utf-8"),"utf-8");
bufferedWriter.write(s);
我觉得是你系统默认编码的问题!!String s = new String("中文".getBytes("utf-8"),"utf-8");这样应该能解决你的问题!!
打个比方
你的java文件的编码格式是UTF-8的,你使用
javac XX.java在中文操作系统(不改环境配置的那种)下
java XX结果写入的就是乱码你要用javac -encoding utf-8 XX.java来编译你的java文件就行了
就是你用A去编码,用B去解码就是乱码
我只是想用java代码去生成utf-8编码的文件。我现在存在的不是代码的问题,代码在我的机器上和另外一个人机器上都是oK,现在的问题在于C同事的JVM有问题,他的jvm中的file.encoding 和system.encoding 根本不起作用,不知道有什么办法 可以保证他的jvm此处的设置生效?
我试过了以下方法,都不生效:
1. java -Dfile.encoding = UTF-8 test.class
2. 到websphere下去修改charset,不生效
3. 修改os的locale为英文,不生效
代码在我机子上跑的也没问题,文件编码都是utf-8的,只是改下环境参数就是里面的内容是乱码而已
可以多切磋,但是这个问题还是不得最佳解。
1、不是所有的utf-8的文件都有bom头
2、因为已经是乱码了,就不在是中文汉字了,所以不能用中文是3个字节来判断,已不是以前的汉字了
用editpuls看吧
选择"Document"->"File Encoding"->"Change File Encoding..."
第一个出来的就是该文件的文件编码
越讨论越跟我的问题远了。
请问你是用ue看二进制的吗?ue有utf-8自动转unicode的选项的,打开的话,ue会自动转的