为了账号安全,请及时绑定邮箱和手机立即绑定

小小的汉字,大大的麻烦

小小的汉字,大大的麻烦

婷婷同学_ 2018-12-07 11:36:12
项目中需要生成一个GBK文件,文件中只有一个汉字“元”,其余都是字母或数字。发现这个字出现了乱码,经测试,只有strTest2不是乱码,其余均是乱码。貌似和发音还有点关系,请问如何才能正确输出一个“元”字?已经在网上试过了好多方法,例如utf-8转unicode,再转GBK,还有new String(strTest1.getBytes("GBK"),"GBK")等等。本工程是utf-8编码。 1 public class StringTest { 2 3 public static void main(String[] args) { 4 String strTest1 = "元"; 5 String strTest2 = "和"; 6 String strTest3 = "元元元元元"; 7 String strTest4 = "缘"; 8 try { 9 stringToFile(strTest1, "d:\\1.txt", "GBK"); 10 stringToFile(strTest2, "d:\\2.txt", "GBK"); 11 stringToFile(strTest3, "d:\\3.txt", "GBK"); 12 stringToFile(strTest4, "d:\\4.txt", "GBK"); 13 } catch (Exception e) { 14 // TODO Auto-generated catch block 15 e.printStackTrace(); 16 } 17 } 18 19 public final static boolean stringToFile(String strContent, String strFilePath, String strCoding) { 20 boolean blnResult = false; 21 FileOutputStream fileOutputStream = null; // 文件输出对象 22 Writer writer = null; 23 try { 24 fileOutputStream = new FileOutputStream(strFilePath); 25 if (strCoding == null || strCoding.trim().length() <= 0) { 26 writer = new OutputStreamWriter(fileOutputStream); 27 } else { 28 writer = new OutputStreamWriter(fileOutputStream, strCoding); 29 } 30 writer.write(strContent); 31 writer.flush(); 32 writer.close(); 33 fileOutputStream.close(); 34 blnResult = true; 35 } catch (Exception e) { 36 } finally { 37 writer = null; 38 fileOutputStream = null; 39 } 40 return blnResult; 41 } 42 }
查看完整描述

3 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

已经解决了。

说明:上面代码生成的文件是没有问题的,只是在用UE或editplus打开时会出现乱码,但是用写字板打开就不是。

又做了这个试验,用UE和editplus新建一个文件,就写一个“元”字,保存后,关闭后重新打开该文件,也同样显示乱码。

写字板打开该文件不会出现乱码,正常显示文字。这说明保存的文字是可以被正确读取的。

于是就又写了段读文件的代码(GBK读取),发现也可以正常显示,OK!

查看完整回答
反对 回复 2018-12-16
?
Qyouu

TA贡献1786条经验 获得超11个赞

确实如此,但是用写字板打开不是乱码。

谢谢回复!

查看完整回答
反对 回复 2018-12-16
  • 3 回答
  • 0 关注
  • 463 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信