diff --git a/src/main/java/com/file/util/BankAbcUnicodeConversion.java b/src/main/java/com/file/util/BankAbcUnicodeConversion.java new file mode 100644 index 0000000000000000000000000000000000000000..ee57f2d9b2491ad45216d5ee7fc683bbc05b2a3c --- /dev/null +++ b/src/main/java/com/file/util/BankAbcUnicodeConversion.java @@ -0,0 +1,288 @@ +package com.decs.demo.utils; + +import org.apache.commons.lang3.StringUtils; + +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +/*** + * 农行流水特殊 unicode 转换工具 + */ +public class BankAbcUnicodeConversion { + + private static final Map unicodeMap = new HashMap<>(); + + static { + unicodeMap.put("2EA0", "6C11"); + unicodeMap.put("2EF0", "9F99"); + unicodeMap.put("2EC1", "864E"); + unicodeMap.put("2EE2", "9A6C"); + unicodeMap.put("2EDC", "98DE"); + unicodeMap.put("2ED3", "957F"); + unicodeMap.put("2EE3", "9AA8"); + unicodeMap.put("2EF3", "9F9F"); + unicodeMap.put("2EC4", "897F"); + unicodeMap.put("2ED4", "95E8"); + unicodeMap.put("2EE4", "9B3C"); + unicodeMap.put("2EE5", "9C7C"); + unicodeMap.put("2EC5", "89C1"); + unicodeMap.put("2EC6", "89D2"); + unicodeMap.put("2EE6", "9E1F"); + unicodeMap.put("2EE7", "5364"); + unicodeMap.put("2ED8", "9752"); + unicodeMap.put("2EE8", "9EA6"); + unicodeMap.put("2EC9", "8D1D"); + unicodeMap.put("2ED9", "97E6"); + unicodeMap.put("2EE9", "9EC4"); + unicodeMap.put("2EDA", "9875"); + unicodeMap.put("2ECB", "8F66"); + unicodeMap.put("2EDB", "98CE"); + unicodeMap.put("2EEC", "9F50"); + unicodeMap.put("2EDD", "98DF"); + unicodeMap.put("2EEE", "9F7F"); + unicodeMap.put("2E8E", "5140"); + unicodeMap.put("2E9F", "6BCD"); + unicodeMap.put("2F00", "4E00"); + unicodeMap.put("2F01", "4E28"); + unicodeMap.put("2F02", "4E36"); + unicodeMap.put("2F03", "4E3F"); + unicodeMap.put("2F04", "4E59"); + unicodeMap.put("2F05", "4E85"); + unicodeMap.put("2F06", "4E8C"); + unicodeMap.put("2F07", "4EA0"); + unicodeMap.put("2F08", "4EBA"); + unicodeMap.put("2F09", "513F"); + unicodeMap.put("2F0A", "5165"); + unicodeMap.put("2F0B", "516B"); + unicodeMap.put("2F0C", "5182"); + unicodeMap.put("2F0D", "5196"); + unicodeMap.put("2F0E", "51AB"); + unicodeMap.put("2F0F", "51E0"); + unicodeMap.put("2F10", "51F5"); + unicodeMap.put("2F11", "5200"); + unicodeMap.put("2F12", "529B"); + unicodeMap.put("2F13", "52F9"); + unicodeMap.put("2F14", "5315"); + unicodeMap.put("2F15", "531A"); + unicodeMap.put("2F16", "5338"); + unicodeMap.put("2F17", "5341"); + unicodeMap.put("2F18", "535C"); + unicodeMap.put("2F19", "5369"); + unicodeMap.put("2F1A", "5382"); + unicodeMap.put("2F1B", "53B6"); + unicodeMap.put("2F1C", "53C8"); + unicodeMap.put("2F1D", "53E3"); + unicodeMap.put("2F1E", "56D7"); + unicodeMap.put("2F1F", "571F"); + unicodeMap.put("2F20", "58EB"); + unicodeMap.put("2F21", "5902"); + unicodeMap.put("2F22", "590A"); + unicodeMap.put("2F23", "5915"); + unicodeMap.put("2F24", "5927"); + unicodeMap.put("2F25", "5973"); + unicodeMap.put("2F26", "5B50"); + unicodeMap.put("2F27", "5B80"); + unicodeMap.put("2F28", "5BF8"); + unicodeMap.put("2F29", "5C0F"); + unicodeMap.put("2F2A", "5C22"); + unicodeMap.put("2F2B", "5C38"); + unicodeMap.put("2F2C", "5C6E"); + unicodeMap.put("2F2D", "5C71"); + unicodeMap.put("2F2E", "5DDB"); + unicodeMap.put("2F2F", "5DE5"); + unicodeMap.put("2F30", "5DF1"); + unicodeMap.put("2F31", "5DFE"); + unicodeMap.put("2F32", "5E72"); + unicodeMap.put("2F33", "5E7A"); + unicodeMap.put("2F34", "5E7F"); + unicodeMap.put("2F35", "5EF4"); + unicodeMap.put("2F36", "5EFE"); + unicodeMap.put("2F37", "5F0B"); + unicodeMap.put("2F38", "5F13"); + unicodeMap.put("2F39", "5F50"); + unicodeMap.put("2F3A", "5F61"); + unicodeMap.put("2F3B", "5F73"); + unicodeMap.put("2F3C", "5FC3"); + unicodeMap.put("2F3D", "6208"); + unicodeMap.put("2F3E", "6236"); + unicodeMap.put("2F3F", "624B"); + unicodeMap.put("2F40", "652F"); + unicodeMap.put("2F41", "6534"); + unicodeMap.put("2F42", "6587"); + unicodeMap.put("2F43", "6597"); + unicodeMap.put("2F44", "65A4"); + unicodeMap.put("2F45", "65B9"); + unicodeMap.put("2F46", "65E0"); + unicodeMap.put("2F47", "65E5"); + unicodeMap.put("2F48", "66F0"); + unicodeMap.put("2F49", "6708"); + unicodeMap.put("2F4A", "6728"); + unicodeMap.put("2F4B", "6B20"); + unicodeMap.put("2F4C", "6B62"); + unicodeMap.put("2F4D", "6B79"); + unicodeMap.put("2F4E", "6BB3"); + unicodeMap.put("2F4F", "6BCB"); + unicodeMap.put("2F50", "6BD4"); + unicodeMap.put("2F51", "6BDB"); + unicodeMap.put("2F52", "6C0F"); + unicodeMap.put("2F53", "6C14"); + unicodeMap.put("2F54", "6C34"); + unicodeMap.put("2F55", "706B"); + unicodeMap.put("2F56", "722A"); + unicodeMap.put("2F57", "7236"); + unicodeMap.put("2F58", "723B"); + unicodeMap.put("2F59", "723F"); + unicodeMap.put("2F5A", "7247"); + unicodeMap.put("2F5B", "7259"); + unicodeMap.put("2F5C", "725B"); + unicodeMap.put("2F5D", "72AC"); + unicodeMap.put("2F5E", "7384"); + unicodeMap.put("2F5F", "7389"); + unicodeMap.put("2F60", "74DC"); + unicodeMap.put("2F61", "74E6"); + unicodeMap.put("2F62", "7518"); + unicodeMap.put("2F63", "751F"); + unicodeMap.put("2F64", "7528"); + unicodeMap.put("2F65", "7530"); + unicodeMap.put("2F66", "758B"); + unicodeMap.put("2F67", "7592"); + unicodeMap.put("2F68", "7676"); + unicodeMap.put("2F69", "767D"); + unicodeMap.put("2F6A", "76AE"); + unicodeMap.put("2F6B", "76BF"); + unicodeMap.put("2F6C", "76EE"); + unicodeMap.put("2F6D", "77DB"); + unicodeMap.put("2F6E", "77E2"); + unicodeMap.put("2F6F", "77F3"); + unicodeMap.put("2F70", "793A"); + unicodeMap.put("2F71", "79B8"); + unicodeMap.put("2F72", "79BE"); + unicodeMap.put("2F73", "7A74"); + unicodeMap.put("2F74", "7ACB"); + unicodeMap.put("2F75", "7AF9"); + unicodeMap.put("2F76", "7C73"); + unicodeMap.put("2F77", "7CF8"); + unicodeMap.put("2F78", "7F36"); + unicodeMap.put("2F79", "7F51"); + unicodeMap.put("2F7A", "7F8A"); + unicodeMap.put("2F7B", "7FBD"); + unicodeMap.put("2F7C", "8001"); + unicodeMap.put("2F7D", "800C"); + unicodeMap.put("2F7E", "8012"); + unicodeMap.put("2F7F", "8033"); + unicodeMap.put("2F80", "807F"); + unicodeMap.put("2F81", "8089"); + unicodeMap.put("2F82", "81E3"); + unicodeMap.put("2F83", "81EA"); + unicodeMap.put("2F84", "81F3"); + unicodeMap.put("2F85", "81FC"); + unicodeMap.put("2F86", "820C"); + unicodeMap.put("2F87", "821B"); + unicodeMap.put("2F88", "821F"); + unicodeMap.put("2F89", "826E"); + unicodeMap.put("2F8A", "8272"); + unicodeMap.put("2F8B", "8278"); + unicodeMap.put("2F8C", "864D"); + unicodeMap.put("2F8D", "866B"); + unicodeMap.put("2F8E", "8840"); + unicodeMap.put("2F8F", "884C"); + unicodeMap.put("2F90", "8863"); + unicodeMap.put("2F91", "897E"); + unicodeMap.put("2F92", "898B"); + unicodeMap.put("2F93", "89D2"); + unicodeMap.put("2F94", "8A00"); + unicodeMap.put("2F95", "8C37"); + unicodeMap.put("2F96", "8C46"); + unicodeMap.put("2F97", "8C55"); + unicodeMap.put("2F98", "8C78"); + unicodeMap.put("2F99", "8C9D"); + unicodeMap.put("2F9A", "8D64"); + unicodeMap.put("2F9B", "8D70"); + unicodeMap.put("2F9C", "8DB3"); + unicodeMap.put("2F9D", "8EAB"); + unicodeMap.put("2F9E", "8ECA"); + unicodeMap.put("2F9F", "8F9B"); + unicodeMap.put("2FA0", "8FB0"); + unicodeMap.put("2FA1", "8FB5"); + unicodeMap.put("2FA2", "9091"); + unicodeMap.put("2FA3", "9149"); + unicodeMap.put("2FA4", "91C6"); + unicodeMap.put("2FA5", "91CC"); + unicodeMap.put("2FA6", "91D1"); + unicodeMap.put("2FA7", "9577"); + unicodeMap.put("2FA8", "9580"); + unicodeMap.put("2FA9", "961C"); + unicodeMap.put("2FAA", "96B6"); + unicodeMap.put("2FAB", "96B9"); + unicodeMap.put("2FAC", "96E8"); + unicodeMap.put("2FAD", "9751"); + unicodeMap.put("2FAE", "975E"); + unicodeMap.put("2FAF", "9762"); + unicodeMap.put("2FB0", "9769"); + unicodeMap.put("2FB1", "97CB"); + unicodeMap.put("2FB2", "97ED"); + unicodeMap.put("2FB3", "97F3"); + unicodeMap.put("2FB4", "9801"); + unicodeMap.put("2FB5", "98A8"); + unicodeMap.put("2FB6", "98DB"); + unicodeMap.put("2FB7", "98DF"); + unicodeMap.put("2FB8", "9996"); + unicodeMap.put("2FB9", "9999"); + unicodeMap.put("2FBA", "99AC"); + unicodeMap.put("2FBB", "9AA8"); + unicodeMap.put("2FBC", "9AD8"); + unicodeMap.put("2FBD", "9ADF"); + unicodeMap.put("2FBE", "9B25"); + unicodeMap.put("2FBF", "9B2F"); + unicodeMap.put("2FC0", "9B32"); + unicodeMap.put("2FC1", "9B3C"); + unicodeMap.put("2FC2", "9B5A"); + unicodeMap.put("2FC3", "9CE5"); + unicodeMap.put("2FC4", "9E75"); + unicodeMap.put("2FC5", "9E7F"); + unicodeMap.put("2FC6", "9EA5"); + unicodeMap.put("2FC7", "9EBB"); + unicodeMap.put("2FC8", "9EC3"); + unicodeMap.put("2FC9", "9ECD"); + unicodeMap.put("2FCA", "9ED1"); + unicodeMap.put("2FCB", "9EF9"); + unicodeMap.put("2FCC", "9EFD"); + unicodeMap.put("2FCD", "9F0E"); + unicodeMap.put("2FCE", "9F13"); + unicodeMap.put("2FCF", "9F20"); + unicodeMap.put("2FD0", "9F3B"); + unicodeMap.put("2FD1", "9F4A"); + unicodeMap.put("2FD2", "9F52"); + unicodeMap.put("2FD3", "9F8D"); + unicodeMap.put("2FD4", "9F9C"); + unicodeMap.put("2FD5", "9FA0"); + unicodeMap.put("9EC3", "9EC4"); + } + + public static String replaceSpecialUnicode(String text) { + if (StringUtils.isBlank(text)) { + return text; + } + IntStream result = text.chars(); + text = result.map(c -> getUnicodeValue((char) c)).mapToObj(i -> Character.toString((char) i)).collect(Collectors.joining()); + return text; + } + + private static char getUnicodeValue(char value) { + String unicode = Integer.toHexString(value).toUpperCase(); + if (unicodeMap.containsKey(unicode)) { + unicode = unicodeMap.get(unicode); + value = (char) Integer.parseInt(unicode, 16); + } + return value; + } + + public static void main(String[] args) { + String text = "⽩⽨⽧⽦⻝⽥⻜⽤⻛⽣⻚⽢⽪⻘⽟⽞⻔⽝⻓⽜⽛⽚⽡⽠⻙⽹⽸⽷⻮⽶⽵⻬⽴⽳⽻⽺⻰⻩⻨⻧⻦⽯⻥⽮⻤⽭⻣⽬⻢⽫⽲⽱⽰⾉⾈⾇⾆⾅⾄⾌⾋⾊⽿⽾⽽⻳⽼⾃⾂⾁⾀⾙⾘⾗⾖黃⾕⾝⾜⾛⾚⾏⾎⾍⾔⾓⾒⾑⾐⾟⾞⺎⺟⼃⼂⼁⼀⼉⼈⼇⼆⼅⼄⼔⾭⼓⾬⼒⾫⼑⾪⼐⼙⼘⼗⼖⾯⼕⾮⼌⾤⼋⾣⼊⾢⾡⾠⾩⾨⼏⾧⼎⾦⼍⾥⼥⾾⼤⾽⼣⾼⼢⾻⼡⾺⼠⼩⼨⼧⼦⾿⼝⾵⼜⾴⼛⾳⼚⾲⾱⾰⾹⾸⼟⾷⼞⾶⼶⿏⼵⿎⼴⿍⼳⿌⼲⿋⼱⿊⼰⼹⼸⼷⼮⿆⼭⿅⼬⿄⼫⿃⼪⿂⺠⿁⿀⿉⿈⼯⿇⽇⽆⽅⽄⽃⽂⽁⽀⽉⽈⼿⼾⼽⿕⼼⿔⼻⿓⼺⿒⿑⿐⽘⽗⽖⽕⽔⻋⽓⽒⽑⽙⻆⽏⻅⽎⻄⽍⽌⽋⻁⽊⽐⻉"; + System.out.println(replaceSpecialUnicode(text)); + } +} + +