zoukankan      html  css  js  c++  java
  • UCS2转UTF-8方法

            前两天工作时需要将UCS2编码转为UTF-8编码在网页显示。网上找了好久没有好方法,后来还是同事给了一个自己的函数,顺利解决问题。把函数贴在这里,愿帮助遇到同样问题的工友们~

    /**
         * UCS2转码为utf-8
         *
         * @author Shangxj
         * @param theString
         * @return String
         */
        public static String UCS2ToUtf8(String theString) {

            // 对theString参数进行处理
            String strU = "\u";
            String resultStr = "";
            int j = 0;
            int length = theString.trim().length();
            StringBuffer outBuffer = new StringBuffer(length);

            try {
                if (!(theString == null || theString.trim().equals(""))) {

                    for (int i = -4; i < length - 4; i = i + 4) {
                        String temStr = theString.trim().substring(i + 4, j + 4);
                        resultStr = resultStr + strU + temStr;
                        j = j + 4;
                    }
                    char aChar;
                    int len = resultStr.length();
                    for (int x = 0; x < len;) {
                        aChar = resultStr.charAt(x++);
                        if (aChar == '\') {
                            aChar = resultStr.charAt(x++);
                            if (aChar == 'u') {
                                // Read the xxxx
                                int value = 0;
                                for (int i = 0; i < 4; i++) {
                                    aChar = resultStr.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;
                                    default:
                                        throw new IllegalArgumentException(
                                                "Malformed \uxxxx encoding.");
                                    }
                                }
                                outBuffer.append((char) value);
                            } else {
                                if (aChar == 't')
                                    aChar = ' ';
                                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);
                    }
                }
            } catch (StringIndexOutOfBoundsException siobe) {
                siobe.printStackTrace();
            }
            return outBuffer.toString();
        }
    }

  • 相关阅读:
    8种CSS清除浮动的方法优缺点分析
    link和@import的区别
    删除表及删除表中数据的方法
    【HTML5】---【HTML5提供的一些新的标签用法以及和HTML 4的区别】
    【HTML】---HTML语义化
    【HTML5】页面点击按钮添加一行 删除一行 全选 反选 全不选
    第四篇:python 高级之面向对象初级
    第三篇:python高级之生成器&迭代器
    第二篇:python高级之装饰器
    第一篇:python高级之函数
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3212606.html
Copyright © 2011-2022 走看看