作业帮 > 综合 > 作业

奇数个汉字GBK编码,转UTF-8编码

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/06/04 20:03:48
奇数个汉字GBK编码,转UTF-8编码
/*模拟测试*/
public class testString {
public static void main(String[] args) throws UnsupportedEncodingException {
String str1 = "10月.jpg";
//假设是过滤器(这个是项目全工程中公用的类,不允许修改)
try {
str1 = new String(str1.getBytes("UTF-8"),"GBK");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(str1);
//假设是我处理的Action(进行编码转回)
try {
str1 = new String(str1.getBytes("GBK"),"UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(str1);
}
}
输出结果:
10链�jpg
10�?jpg
检验发现,如果是偶数个汉字“10月份.jpg”
输出结果:
10链堜唤.jpg
10月份.jpg
合作开发的工程,尽量不要修改过滤器,能在Action我想尽量在Action中处理.
想了好久没想出处理方法,百度上也未搜索到合理的处理方案,
奇数个汉字GBK编码,转UTF-8编码
str1 = new String(str1.getBytes("UTF-8"),"GBK");
按你的测试过程,这一步已经丢字符了,出现问号了.
--------------------------------
如果接受到的数据,是UTF-8编码的字节流,那么应该按UTF-8还原为字符,然后再getBytes("GBK")转为GBK字节流~