改进后:
本文参考:《java可供判断某字符串是什么编码的一行代码》
搜索了很多关于request.获取客户端内容,然后保存到服务端后的??问题,确实都是些烂大街的解决乱码问题,但却没有搜索到一个关于?乱码的问题,最终解决了!
一直以为?乱码是因为转换编码的问题,最后发现确实是转换的问题。不过发现是:
当出现?时,说明你不需要对request获取的字符串进行编码!!!!!
有的时候,越是以为很难解决的问题,其实确实自己走弯路,想得太多。
注意:当转码出现???时,说明不需要转码,其本身就是你想要的目标码
以下方法是转码的方法,仅供参考,该方法返回的是转换后的编码!!(最好的转码方式便是:把服务器编码和本地编码设置成一样,但有的时候,你不知道自己的代码会放在什么地方,所以,兼容问题必须解决)
//将原对象传入,改变后返回字符串
public String returnString(String string){
byte [] bytes;
String s = null;
try {
bytes = string.getBytes("ISO-8859-1");
s = new String(bytes,"UTF-8");
//1、如果字符串编码是ISO-8859-1,便返回重新编码后的字符串
if(string.equals(new String(string.getBytes("ISO-8859-1"),"ISO-8859-1")))return s;
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//2、如果字符串编码不是ISO-8859-1,则直接返回原字符串
return string;
}
注意:以上方法在本地能够成功,不知道为何修改服务端servler.xml编码也不行,希望指正,虽然问题没完全解决,但还将继续研究。
最后,想说的是:网上设置头部编码返回的方法,很多很多,或者修改服务器编码,但发现改了对上面我出的错无法统一解决!!所以多多写代码,总结,确实才是解决之道!!!!,太久没写代码,感慨颇多!若总结有问题,望指正!(只写了总结,没将过程写出来,望谅解,只有自己认真写过各种错误,才能提高自己的理解)