为什么发生这种异常请帮帮我

时间:2015-04-22 11:08:27

标签: java

import java.io.*;

class Iostream5{ 

  public static void main(String[] args)throws Exception{

     FileOutputStream f1=new FileOutputStream("ajay.txt");

     String aa="hello ajay its very bad that u given all information";    
     byte Fileinfo[]=aa.getBytes(aa);

     f1.write(Fileinfo);
     f1.close();   
     System.out.println("Sucesss...");

    }
}

异常追踪

线程“main”中的异常

java.io.UnsupportedEncodingException: hello ajay its very bad that u given 
all information
    at java.lang.StringCoding.encode(StringCoding.java:341)
    at java.lang.String.getBytes(String.java:916)
    at Iostream5.main(Iostream5.java:6)

4 个答案:

答案 0 :(得分:3)

错误在行

  

byte Fileinfo [] = aa.getBytes(aa);

您传递的参数应该是字符集编码(例如“UTF-8”)。由于String aa本身不是有效的编码,因此会出现UnsupportedEncodingException。

您可以在Java文档herehere中阅读相关内容。

答案 1 :(得分:1)

没有使用您正在使用的签名String.getBytes(String)的方法。相反,使用aa.getBytes()或将签名更改为Charset,这是另一种选择,如docs中所示。

答案 2 :(得分:0)

如上所述,您可以更改此行代码:

byte Fileinfo[]=aa.getBytes(aa);

通过

byte Fileinfo[]=aa.getBytes(Charset.forName("UTF-8"));

byte Fileinfo[]=aa.getBytes(Charset.forName("Windows-1252"));

取决于您要定位的编码

答案 3 :(得分:0)

检查javaDoc以了解您正在使用的方法。

  

getBytes(String charsetName)   使用指定的字符集将此String编码为字节序列,并将结果存储到新的字节数组中。

参数应该包含有效的charsetName,而不是要转换为字节的字符串。