當前位置:編程學習大全網 - 腳本源碼 - 請問 \345\207\235\346\266\265\346\237\217 這個是什麽編碼? 解碼之後是什麽內容?

請問 \345\207\235\346\266\265\346\237\217 這個是什麽編碼? 解碼之後是什麽內容?

/**將包含八進制數據的字符串轉換為漢字字符串。

* 例如將 dynamicMsg: \344\270\215\350\203\27510 轉換為 dynamicMsg: 不能10*/

public static String transfromOctalToString(String dataStr) {

if (! dataStr.contains("\\")) {

return dataStr;

}

//不屬於八進制內容的字符

StringBuilder oldBuffer = new StringBuilder();

//屬於八進制的內容,轉成十六進制後緩存在這裏

StringBuilder hexBuffer = new StringBuilder();

for (int i = 0; i < dataStr.length(); i ++) {

char c = dataStr.charAt(i);

if (c != '\\') {

oldBuffer.append(c);

}

//反斜杠往後3個為壹組,組成了壹個八進制數。例如\20710,其實是207組成了壹個八進制數

else {

char c1 = dataStr.charAt(i + 1);

char c2 = dataStr.charAt(i + 2);

char c3 = dataStr.charAt(i + 3);

i += 3;

//將八進制轉換為十進制,再轉換為十六進制

String hex = Integer.toHexString((Integer.valueOf("" + c1 + c2 + c3, 8)));

//先緩存住,直到湊夠三個字節

hexBuffer.append(hex);

String hexString = hexBuffer.toString();

//utf8編碼中,三個字節為壹個漢字

if (hexString.length() == 6) {

//湊夠三個字節了,轉成漢字後放入oldBuffer中

oldBuffer.append(hexStr2Str(hexString));

//湊夠壹個漢字了,清空緩存

hexBuffer = new StringBuilder();

}

}

}

return oldBuffer.toString();

}

/**

* 十六進制轉換字符串

*/

private static String hexStr2Str(String hexStr) {

String str = "0123456789abcdef";

char[] hexs = hexStr.toCharArray();

byte[] bytes = new byte[hexStr.length() / 2];

int n;

for (int i = 0; i < bytes.length; i++) {

n = str.indexOf(hexs[2 * i]) * 16;

n += str.indexOf(hexs[2 * i + 1]);

bytes[i] = (byte) (n & 0xff);

}

return new String(bytes, StandardCharsets.UTF_8);

}

  • 上一篇:全職高手動漫更新的小說哪裏
  • 下一篇:脫機使用打印機是什麽意思
  • copyright 2024編程學習大全網