1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
public class GBK { private static final Charset CHARSET = Charset.forName("GBK");
public static List<String> getGBK() { List<String> words = new ArrayList<>(); byte[] bytes = new byte[2];
for (int b1 = 0xA1; b1 <= 0xA9; b1++) { bytes[0] = (byte) b1; for (int b2 = 0xA1; b2 <= 0xFE; b2++) { bytes[1] = (byte) b2; words.add(new String(bytes, CHARSET)); } }
for (int b1 = 0xB0; b1 <= 0xF7; b1++) { bytes[0] = (byte) b1; for (int b2 = 0xA1; b2 <= 0xFE; b2++) { bytes[1] = (byte) b2; words.add(new String(bytes, CHARSET)); } }
for (int b1 = 0x81; b1 <= 0xA0; b1++) { bytes[0] = (byte) b1; for (int b2 = 0x40; b2 <= 0xFE; b2++) { bytes[1] = (byte) b2; if (b2 != 0x7F) { words.add(new String(bytes, CHARSET)); } } }
for (int b1 = 0xAA; b1 <= 0xFE; b1++) { bytes[0] = (byte) b1; for (int b2 = 0x40; b2 <= 0xA0; b2++) { bytes[1] = (byte) b2; if (b2 != 0x7F) { words.add(new String(bytes, CHARSET)); } } }
for (int b1 = 0xA8; b1 <= 0xA9; b1++) { bytes[0] = (byte) b1; for (int b2 = 0x40; b2 <= 0xA0; b2++) { bytes[1] = (byte) b2; if (b2 != 0x7F) { words.add(new String(bytes, CHARSET)); } } }
return words; }
public static boolean isGBK(String str) { boolean isGBK = false; char[] chars = str.toCharArray(); for (char c : chars) { byte[] bytes = String.valueOf(c).getBytes(CHARSET); if (bytes.length == 2) { int b1 = bytes[0] & 0xff; int b2 = bytes[1] & 0xff; if (b1 >= 0xA1 && b1 <= 0xA9 && b2 >= 0xA1 & b2 <= 0xFE) { isGBK = true; break; }
if (b1 >= 0xB0 && b1 <= 0xF7 && b2 >= 0xA1 & b2 <= 0xFE) { isGBK = true; break; }
if (b1 >= 0x81 && b1 <= 0xA0 && b2 >= 0x40 & b2 <= 0xFE && b2 != 0x7F) { isGBK = true; break; }
if (b1 >= 0xAA && b1 <= 0xFE && b2 >= 0x40 & b2 <= 0xA0 && b2 != 0x7F) { isGBK = true; break; }
if (b1 >= 0xA8 && b1 <= 0xA9 && b2 >= 0x40 & b2 <= 0xA0 && b2 != 0x7F) { isGBK = true; break; } } } return isGBK; } }
|