Atitit 乱码的检测与纠正总结 目录 1. Atitit.request 乱码的检测与解决 attilax总结 1 1.1. 乱码的检测,,可以检测,列徐俩个问好?? 1 1.2. 使用常用汉字

Atitit 乱码的检测与纠正总结

目录

1. Atitit.request 乱码的检测与解决 attilax总结 1

1.1. 乱码的检测,,可以检测,列徐俩个问好?? 1

1.2. 使用常用汉字检测。如果发现常用汉字 2

1.3. 英文大小写字母,数字以及附加一个小数点 3

1.4. 检测阈值60% 3

2. 乱码的纠正 3

2.1. 常用乱码探测 3

2.2. 决策树 3

2.3. 使用策略模式逐一探测常用编码 3

2.4. Req map乱码的纠正 4

3. 调用 指定纠正乱码的列 为了稳定性 4

4. 性能与稳定性 5

4.1. Cache guava 5

4.2. 调用foreach try catch 5

5. 保障正确性 与稳定性 5

5.1. 指定纠正列白名单机制 5

5.2. 字库文件编码侦测 5

5.3. 字库长度探测与提示 5

5.4. Str2list  set的时候空字符检测与重整 5

5.5. 检测阈值开放 5

6. Ref 5

1. Atitit.request 乱码的检测与解决 attilax总结

乱码

1.1. 乱码的检测,,可以检测,列徐俩个问好??

if(value.contains("??"))

value=v_oriagal

response.setCharacterEncoding("utf-8");

response.setContentType("text/html;charset=UTF-8");

1.2. 使用常用汉字检测。如果发现常用汉字

使用常用汉字2500与英文大小写字母,数字以及附加一个小数点。检测阈值60
%

private static boolean isCoreectDecode(String s) {

// Strutil.toSet(compressableMimeType, string)

String f = "";

try {

f = FileUtils.readFileToString(new File(pathx.classPath() + File.separator + "com/attilax/web/2500.txt"),

"utf8");

} catch (IOException e) {

throw new RuntimeException(e);

}

f = f + "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ.";

charset = strService.toSetNoSplitor(f);

List<String> li_sa =strService. toListNoSplitor(s);

int correctCnt = 0;

for (String ch : li_sa) {

if (charset.contains(ch))

correctCnt++;

}

if ((float) correctCnt / (float) s.length() > 0.6)

return true;

else

return false;

}

 

1.3. 英文大小写字母,数字以及附加一个小数点

1.4. 检测阈值60%

2. 乱码的纠正

2.1. 常用乱码探测

2.2. 决策树

2.3. 使用策略模式逐一探测常用编码

 

public static String getCorrectDecodeTxt(String s) {

 

if (isCoreectDecode(s))

return s;

else

{

String  iso2gbk= encodeService.iso2gbk(s);

if(isCoreectDecode(iso2gbk))

return iso2gbk;

String  iso2utf= encodeService.iso2utf(s);

if(isCoreectDecode(iso2utf))

return iso2utf;

String  gbk2utf8= encodeService.gbk2utf8(s);

if(isCoreectDecode(gbk2utf8))

return gbk2utf8;

String  utf2gbk= encodeService.utf2gbk(s);

if(isCoreectDecode(utf2gbk))

return utf2gbk;

}

 

return s;

}

 

2.4. Req map乱码的纠正

 

public static void setCorrectDecodeText(Map<String, Object> paramMap, String keys) {

String[] sa=keys.split(",");

for (String k : sa) {

try {

String correctDecodeTxt = encodeService.getCorrectDecodeTxt(paramMap.get(k).toString());

 paramMap.put(k, correctDecodeTxt);

} catch (Exception e) {

e.printStackTrace();

}

 

}

}

 

 

3. 调用 指定纠正乱码的列 为了稳定性

防止过纠正

 

    public ModelVo weizhonRec_save() throws Exception{

ModelVo modelVo = new ModelVo();

       

    Map<String,Object> paramMap =reqService.putMapByReqParams("VCF08,VAA07,VCF09,VCF65,VCF66,VCF67,VCF68,VCF69,VCF70,VCF09A,VCF18,VAA05,BCE03A,VAA01,VCF11,BCE01A,room",request1);

     

   

   encodeService.setCorrectDecodeText(paramMap,"BCE03A,VCF65,VCF66,VCF67,VCF68,VCF69,VCF70");

   // String correctDecodeTxt = encodeService.getCorrectDecodeTxt(s);

//try{

  vaf2Bo.weizhonRec_save(paramMap);

 

4. 性能与稳定性

4.1. Cache guava

4.2. 调用foreach try catch

5. 保障正确性 与稳定性

5.1.  指定纠正列白名单机制

5.2. 字库文件编码侦测

5.3. 字库长度探测与提示

5.4. Str2list  set的时候空字符检测与重整

5.5. 检测阈值开放

6. Ref

/honurse/src/com/attilax/web/encodeService.java

response设置编码的三种方式 - 微尘的世界 - ITeye技术网站.html

java检测乱码原编码 - CSDN博客.html  todo

7. Mindchart

· 1. 乱码检测

· 1.1. 乱码的检测,,可以检测,列徐俩个问好?? 1

· 1.2. 使用常用汉字检测。如果发现常用汉字 2

· 1.3. 英文大小写字母,数字以及附加一个小数点 3

· 1.4. 检测阈值60% 3

· 2. 乱码的纠正 3

· 2.1. 常用乱码探测 3

· 2.2. 决策树 3

· 2.3. 使用策略模式逐一探测常用编码 3

· 2.4. Req map乱码的纠正 4

· 3. 调用 指定纠正乱码的列 为了稳定性 4

· 4. 性能与稳定性 5

· 4.1. Cache guava 5

· 4.2. 调用foreach try catch 5

· 5. 保障正确性 与稳定性 5

· 5.1. 指定纠正列白名单机制 5

· 5.2. 字库文件编码侦测 5

· 5.3. 字库长度探测与提示 5

· 5.4. Str2list  set的时候空字符检测与重整 5

· 5.5. 检测阈值开放 5

原文地址:https://www.cnblogs.com/attilax/p/15197623.html