我的一个程序偶尔报“sun.io.MalformedInputException”。
详细信息:
sun.io.MalformedInputException
at sun.io.ByteToCharUTF8.convert(ByteToCharUTF8.java(Compiled Code))
at java.io.InputStreamReader.convertInto(InputStreamReader.java(Inlined Compiled Code))
at java.io.InputStreamReader.fill(InputStreamReader.java(Compiled Code))
at java.io.InputStreamReader.read(InputStreamReader.java(Compiled Code))
at java.io.BufferedReader.fill(BufferedReader.java(Compiled Code))
at java.io.BufferedReader.readLine(BufferedReader.java(Compiled Code))
at java.io.BufferedReader.readLine(BufferedReader.java(Compiled Code))
at dsmpboss.servlet.HomeReceiver.Process(HomeReceiver.java:77)
at dsmpboss.servlet.HomeReceiver.service(HomeReceiver.java:237)
at javax.servlet.http.HttpServlet.service(HttpServlet.java(Compiled Code))
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java(Compiled Code))
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java(Compiled Code))
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java(Inlined Compiled Code))
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java(Compiled Code))
at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManager.java(Compiled Code))
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java(Compiled Code))
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java(Compiled Code))
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java(Compiled Code))
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:219)
代码:
try {
BufferedReader in = new BufferedReader(new InputStreamReader(request.getInputStream(),"UTF-8"));
while ((sLine = in.readLine()) != null) {
sbBuf.append(sLine);
}
in.close();
} catch (Exception e2 ) {
System.out.println("get package from client error!");
throw e2;
}
gsInputData = sbBuf.toString();
gsInputData = gsInputData.substring(9,gsInputData.length());
现象:主要是当报文中有汉字时比较容易报这个错,但是不是全错,还是有解析正确的。
------解决方法--------------------------------------------------------
sun.io.ByteToCharUTF8.convert(ByteToCharUTF8.java(Compiled Code))
是在不行 你反编译看下算了
------解决方法--------------------------------------------------------
不行的话,你用in.read(byte[]);看看