编码问题之:java.io.UTFDataFormatException: Invalid byte 2 of 2-byte UTF-8 sequence.

简介:
今天在编码的时候遇到如下问题
java.io.UTFDataFormatException: Invalid byte 2 of 2-byte UTF-8 sequence.
函数源码:
 static InputStream String2InputStream(String str) throws Exception{
     ByteArrayInputStream stream = new ByteArrayInputStream()
     return stream;
 }
实现的功能将一个xml字符串转换为Stream类型。
调用时的源码
  String ExpXmlText ="<?xml version=\"1.0\" encoding=\"utf-8\"?><AppSubscResult>" +
    "  <appId>elbert_app_dsc005</appId>" +
    "  <longId>wangwang101112347</longId>" +
    "  <time>1236235618357</time>" +
    "  <sign>a2e82a649b38ad10790160ec40e282af</sign>" +
    "  <result>Yes</result>" +
    "  <subscUserId>elb_aui_005</subscUserId>" +
    "  <appInstanceId>USER8B38B4C13EFE7276F75889E3123C4428</appInstanceId>" +
    "  <gmtStart>"+util.TimeHelp.getTimestamp_BeforeNDay(65)+" 00:00:00</gmtStart>" +
    "  <gmtEnd>"+util.TimeHelp.getTimestamp_BeforeNDay(7)+" 23:59:59</gmtEnd>" +
    "  <subscUrl>http://mall.alisoft.com/apps/subsc/subscDisplay!execute.jspa?appId=elbert_app_dsc005</subscUrl>" +
    "  <errorMessage>" +
    "</errorMessage>" +
    "</AppSubscResult>";
调用
String2InputStream(ExpXmlText );
结果报:
java.io.UTFDataFormatException: Invalid byte 2 of 2-byte UTF-8 sequence.
经查时由于声明的ExpXmlText 是UTF-8编码的,而转换的时候使用默认的编码是gbk的
查明原因后,将原函数修订如下
 static InputStream String2InputStream(String str) throws Exception{
     ByteArrayInputStream stream = new ByteArrayInputStream(str.getBytes("utf-8"));
     return stream;
 }
问题解决


本文转自elbertchen 51CTO博客,原文链接:http://blog.51cto.com/linkyou/283238,如需转载请自行联系原作者
相关文章
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
406 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
Java系列之:字符串UTF-8 编码格式转换位 UTF-32 【生僻字截取问题】
这篇文章讨论了在Java中处理包含生僻字的字符串时可能遇到的问题,并提供了一种解决方法:将字符串的编码格式从UTF-8转换为UTF-32,以确保每个字符都占用固定的字节数,从而避免在截取操作中破坏字符,示例代码展示了如何进行编码转换和字符串截取。
|
编解码
UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xe9 in position 3114: invalid continuation byte
UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xe9 in position 3114: invalid continuation byte
196 0
|
编解码 程序员 开发者
【Python】已解决:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xa1 in position 0: invalid start by
【Python】已解决:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xa1 in position 0: invalid start by
11288 0
|
Java Apache Maven
Java:commons-codec实现byte数组和16进制字符串转换
在上述代码中,`Hex.encodeHexString(bytes)`用于将byte数组转换为16进制字符串,`Hex.decodeHex(hexString)`用于将16进制字符串转换为byte数组。
477 0
|
Java Apache Maven
Java:commons-codec实现byte数组和16进制字符串转换
在上述代码中,`Hex.encodeHexString(bytes)`用于将byte数组转换为16进制字符串,`Hex.decodeHex(hexString)`用于将16进制字符串转换为byte数组。
477 0
|
JSON Java 数据格式
No converter for [class java.util.LinkedHashMap] with preset Content-Type 'text/json;charset=UTF-8']问题
【5月更文挑战第21天】No converter for [class java.util.LinkedHashMap] with preset Content-Type 'text/json;charset=UTF-8']问题
3971 0
|
JSON Java 数据格式
No converter for [class java.util.HashMap] with preset Content-Type 'text/json;charset=UTF-8'问题
【5月更文挑战第21天】No converter for [class java.util.HashMap] with preset Content-Type 'text/json;charset=UTF-8'问题
995 0
|
Java 应用服务中间件
程序启动时报: Invalid byte tag in constant pool: 19
程序启动时报: Invalid byte tag in constant pool: 19
743 0
|
Java 应用服务中间件
完美解决tomcat启动异常:Invalid byte tag in constant pool: 19;Unable to process Jar entry [module-info.class]
完美解决tomcat启动异常:Invalid byte tag in constant pool: 19;Unable to process Jar entry [module-info.class]
2246 0