由于数据库里存的是iso8859-1的字符,需要在取出时将其转化为GBK编码以进行输出,
故在此用以下代码进行转换
- Java code
public String convertISO8859_1ToGBK(String str) { String returnStr = ""; if (str.startsWith("\"")) { str = str.substring(1); } if (str.endsWith("\"")) { str = str.substring(0, str.length() - 1); } try { returnStr = new String(str.getBytes("ISO8859_1"), "GBK"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return returnStr; }
以上函数用以下代码测试通过,转换成功
- Java code
System.out.println(convertISO8859_1ToGBK("\320\302\272\350\317\35086 2070W\320\266\264\254\264\254\315\274 (2).txt")); //里面的字符就是iso8859-1的
输出结果为 新鸿翔86 2070W卸船船图 (2).txt
但是当我把这个函数用于WEB项目时,问题出现了,转换后的字符串与转换前没有任何区别。
DEBUG过,转换前的字符串与上面的完全相同,转换后不变,绝不是页面输出问题。数据库连接为GBK。
求解
------解决方案--------------------
你的数据源是从数据库里取的还是从前台传过来的?
如果从前台传过来的,那这个方法就不一定能转换成功了,因为我们不知道你前台的编码是什么?
如果从数据库取出来,在后台打印还是没转换过来的话,这个原因就不清楚了
------解决方案--------------------
楼主你把怎么调的代码贴出来看看呢?