public class CharUtil {
static String [] charSetA = new String[]{"iso8859-1", "utf-8", "gb2312", "gbk"};
static String [] charSetB = new String[]{"utf-8", "iso8859-1", "gb2312", "gbk"};
public static void main(String args[]) {
String[] sa = new String[] {
"abc", "109", ",?", "??2??????? ?", "?3", "?;:"};
for (int i = 0; i < sa.length; i++) {
System.out.println(sa[i] + "/t--->/t" + firm(sa[i]));
}
}
/**
* 判断变量是否为乱码(连续两个"??"即为乱码)
* @param s String
* @return boolean
* "true" --- 变量为乱码
*/
public static boolean firm(String s) {
for (int i = 0; i < s.length(); i++) {
Character ch = new Character(s.charAt(i));
if (ch.toString().getBytes().length == 1 && !verifySC(ch.charValue())) {
return false;
}
}
if (s.indexOf("??") != -1) {
return false;
}
else if (s.indexOf("?") == 0) {
return false;
}
else {
return true;
}
}
public static boolean verifySC(char c) {
if ( (c <= 'z' && c >= 'a') || (c <= 'Z' && c >= 'A') ||
(c <= '9' && c >= ' ') || (c == '?') || (c == ':') || (c == ';')) {
return true;
}
return false;
}
public static String getChinese(String s){
System.out.println("s :"+s);
if(s==null){
return "";
}else if(firm(s)){
System.out.println("firm(s)---->"+s);
return s;
}else{
String sTemp = "";
boolean isChinese = false;//
for(int i=0; i<charSetA.length&&!isChinese; i++){
for(int j=0; j<charSetB.length&&!isChinese; j++){
try{
sTemp = new String(s.getBytes(charSetA[i]), charSetB[j]);
System.out.println(" charSetA[i]:"+charSetA[i]+" charSetB[j]:"+charSetB[j]+" sTemp:"+sTemp);
}catch(java.io.IOException e){
//log.error("在做汉字转换时候出错",e);
continue;
}
isChinese = firm(sTemp);
}
}
System.out.println("isChinese?sTemp:"+(isChinese?sTemp:s));
return isChinese?sTemp:s;
}
}
}
/*########################总结###################################*/
通过调用getchinese即可转换成中文
在我使用时却遇到一些问题
var url = "ainfo.do?method=searchproxyer&r=" + Math.random()+"&proxyername="+proxyer11+"&curpage="+searcurpage;
//将变量放到url中 通过”get“,能够在服务端解码后正确显示
//将变量通过req.open("post",url,true)"发送送,req.send( proxyername="+proxyer11+"&curpage="+searcurpage);这样发送服务端却是乱码,几种字符编码循环一次还是乱码。
if(req){
req.open("GET",url,true);
req.onreadystatechange = processLoadResponse;
// req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
req.send(null);
}
/*########################每天写总结###################################*/
static String [] charSetA = new String[]{"iso8859-1", "utf-8", "gb2312", "gbk"};
static String [] charSetB = new String[]{"utf-8", "iso8859-1", "gb2312", "gbk"};
public static void main(String args[]) {
String[] sa = new String[] {
"abc", "109", ",?", "??2??????? ?", "?3", "?;:"};
for (int i = 0; i < sa.length; i++) {
System.out.println(sa[i] + "/t--->/t" + firm(sa[i]));
}
}
/**
* 判断变量是否为乱码(连续两个"??"即为乱码)
* @param s String
* @return boolean
* "true" --- 变量为乱码
*/
public static boolean firm(String s) {
for (int i = 0; i < s.length(); i++) {
Character ch = new Character(s.charAt(i));
if (ch.toString().getBytes().length == 1 && !verifySC(ch.charValue())) {
return false;
}
}
if (s.indexOf("??") != -1) {
return false;
}
else if (s.indexOf("?") == 0) {
return false;
}
else {
return true;
}
}
public static boolean verifySC(char c) {
if ( (c <= 'z' && c >= 'a') || (c <= 'Z' && c >= 'A') ||
(c <= '9' && c >= ' ') || (c == '?') || (c == ':') || (c == ';')) {
return true;
}
return false;
}
public static String getChinese(String s){
System.out.println("s :"+s);
if(s==null){
return "";
}else if(firm(s)){
System.out.println("firm(s)---->"+s);
return s;
}else{
String sTemp = "";
boolean isChinese = false;//
for(int i=0; i<charSetA.length&&!isChinese; i++){
for(int j=0; j<charSetB.length&&!isChinese; j++){
try{
sTemp = new String(s.getBytes(charSetA[i]), charSetB[j]);
System.out.println(" charSetA[i]:"+charSetA[i]+" charSetB[j]:"+charSetB[j]+" sTemp:"+sTemp);
}catch(java.io.IOException e){
//log.error("在做汉字转换时候出错",e);
continue;
}
isChinese = firm(sTemp);
}
}
System.out.println("isChinese?sTemp:"+(isChinese?sTemp:s));
return isChinese?sTemp:s;
}
}
}
/*########################总结###################################*/
通过调用getchinese即可转换成中文
在我使用时却遇到一些问题
var url = "ainfo.do?method=searchproxyer&r=" + Math.random()+"&proxyername="+proxyer11+"&curpage="+searcurpage;
//将变量放到url中 通过”get“,能够在服务端解码后正确显示
//将变量通过req.open("post",url,true)"发送送,req.send( proxyername="+proxyer11+"&curpage="+searcurpage);这样发送服务端却是乱码,几种字符编码循环一次还是乱码。
if(req){
req.open("GET",url,true);
req.onreadystatechange = processLoadResponse;
// req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
req.send(null);
}
/*########################每天写总结###################################*/