zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Java实现的utf8,gbk,unicode编码相互转换的代码详解编程语言

JAVA转换编码编程语言代码 实现 详解 相互
2023-06-13 09:20:29 时间
public static String GBK2Unicode(String str) { StringBuffer result = new StringBuffer(); for (int i = 0; i str.length(); i++) { char chr1 = (char) str.charAt(i); if (!isNeedConvert(chr1)) { result.append(chr1); continue; result.append("//u" + Integer.toHexString((int) chr1)); return result.toString(); /** * @param dataStr * @return String public static String Unicode2GBK(String dataStr) { int index = 0; StringBuffer buffer = new StringBuffer(); int li_len = dataStr.length(); while (index li_len) { if (index = li_len - 1 || !"//u".equals(dataStr.substring(index, index + 2))) { buffer.append(dataStr.charAt(index)); index++; continue; String charStr = ""; charStr = dataStr.substring(index + 2, index + 6); char letter = (char) Integer.parseInt(charStr, 16); buffer.append(letter); index += 6; return buffer.toString(); public static boolean isNeedConvert(char para) { return ((para (0x00FF)) != para); /** * utf-8 转unicode * @param inStr * @return String public static String utf8ToUnicode(String inStr) { char[] myBuffer = inStr.toCharArray(); StringBuffer sb = new StringBuffer(); for (int i = 0; i inStr.length(); i++) { UnicodeBlock ub = UnicodeBlock.of(myBuffer[i]); if (ub == UnicodeBlock.BASIC_LATIN) { sb.append(myBuffer[i]); } else if (ub == UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) { int j = (int) myBuffer[i] - 65248; sb.append((char) j); } else { short s = (short) myBuffer[i]; String hexS = Integer.toHexString(s); String unicode = "//u" + hexS; sb.append(unicode.toLowerCase()); return sb.toString(); /** * @param theString * @return String public static String unicodeToUtf8(String theString) { char aChar; int len = theString.length(); StringBuffer outBuffer = new StringBuffer(len); for (int x = 0; x len;) { aChar = theString.charAt(x++); if (aChar == //) { aChar = theString.charAt(x++); if (aChar == u) { // Read the xxxx int value = 0; for (int i = 0; i i++) { aChar = theString.charAt(x++); switch (aChar) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: value = (value 4) + aChar - 0; break; case a: case b: case c: case d: case e: case f: value = (value 4) + 10 + aChar - a; break; case A: case B: case C: case D: case E: case F: value = (value 4) + 10 + aChar - A; break; default: throw new IllegalArgumentException( "Malformed //uxxxx encoding."); outBuffer.append((char) value); } else { if (aChar == t) aChar = /t; else if (aChar == r) aChar = /r; else if (aChar == n) aChar = /n; else if (aChar == f) aChar = /f; outBuffer.append(aChar); } else outBuffer.append(aChar); return outBuffer.toString(); }

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/10748.html

cjava