解析出错
问题
java.util.MissingFormatArgumentException: Format specifier ‘%E’
解读
String.format(decodeStr, args)
解析的String 存在 %E9%9B%A8%E6%B1%A1就会报错
最简单的方法是是将 整个string放在里面转成带有汉字或其他字符就不会报错【% 上网查询是占位符】,后面没有替换的字符导致报错
解决办法
先string 内带有%E9%9B%A8%E6%B1%A1转换中文。
try {
String decodeStr= URLDecoder.decode(format, "utf-8");//显示中文字体
String.format(decodeStr, args);//再使用string
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
下面转换例子
编码
String Str = URLEncoder.encode("雨污", "utf-8");
System.out.println("处理后:" + Str);
//处理后:%E9%9B%A8%E6%B1%A1
解码
String Str = URLDecoder.decode(Str, "utf-8");
System.out.println("解码:" + Str);
//解码:雨污
本文解析了Java中遇到的格式化错误,特别提到`%E9%9B%A8%E6%B1%A1`导致的`MissingFormatArgumentException`,并提供了使用`URLDecoder.decode()`进行中文字符解码的解决方案。通过实例说明了编码和解码的过程,确保字符串正确处理后避免了格式化异常。
84

被折叠的 条评论
为什么被折叠?



