詭異的?號(UTF-8編碼提交空格變成?號)
阿新 • • 發佈:2019-01-22
我的解決辦法:
/**
* 轉換UTF-8編碼下空格詭異變成的?號* @param content
* @return
*/
public String transUTFQuestionMark(String content){
try {
byte[] spaces = {-62,-96};//UTF-8形式的空格的byte[]形式 即?號
String UTFSpace = new String(spaces,"UTF-8");//將byte[]型的空格用UTF-8的編碼形式轉換成?號
// System.out.println("====utf8空格===="+UTFSpace);
byte[] otherSpaces = {-62,-96,32};//UTF-8形式的空格的byte[]形式 即?號加一個空格 (? )
String otherUTFSpace = new String(otherSpaces,"UTF-8");//將byte[]型的空格用UTF-8的編碼形式轉換成?號+一個空格
// System.out.println("====utf8 other空格===="+otherUTFSpace);
// System.out.println("=== old content====="+content);
content = content.replaceAll(UTFSpace, " ");//首先替換後面不帶空格的?號(必須首先)
// System.out.println("=====new content==="+content);
content = content.replaceAll(otherUTFSpace, " ");//然後替換不帶空格的?號。
// System.out.println("=====final content==="+content);
// byte[] transContent = finalContent.getBytes("UTF-8");
// newContent = new String(transContent,"UTF-8");
// for(int i=0;i<transContent.length;i++){
// System.out.println("=============="+transContent[i]);
// }
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return content;
}