`

fromUnicode

    博客分类:
  • JAVA
阅读更多

/**
     * 从 Unicode 码转换成编码前的特殊字符串。
     * @param in Unicode编码的字符数组。
     * @param off 转换的起始偏移量。
     * @param len 转换的字符长度。
     * @param convtBuf 转换的缓存字符数组。
     * @return 完成转换,返回编码前的特殊字符串。
     */
 public static String fromUnicode(char[] in, int off, int len, char[] convtBuf) {
        if (convtBuf.length < len) {
            int newLen = len * 2;
            if (newLen < 0) {
                newLen = Integer.MAX_VALUE;
            }
            convtBuf = new char[newLen];
        }
        char aChar;
        char[] out = convtBuf;
        int outLen = 0;
        int end = off + len;

        while (off < end) {
            aChar = in[off++];
            if (aChar == '\\') {
                aChar = in[off++];
                if (aChar == 'u') {
                    // Read the xxxx
                    int value = 0;
                    for (int i = 0; i < 4; i++) {
                        aChar = in[off++];
                        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.");
                        }
                    }
                    out[outLen++] = (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';
                    }
                    out[outLen++] = aChar;
                }
            } else {
                out[outLen++] = (char) aChar;
            }
        }
        return new String(out, 0, outLen);
    }

分享到:
评论

相关推荐

    pb9.0 UTF-8 编码转换为Unicode 编码格式

    PowerBuilder9.0开发环境下,可以把UTF-8的编码转换为Unicode的编码格式,在pb9.0环境下测试通过。

    Unicode编码与汉字互转.rar

    这里,`fromUnicode()`方法将UTF-32LE编码的字节序列(对应于\u格式的Unicode编码)转换为QString,而`toUnicode()`方法则将汉字字符串转换为UTF-32BE编码,然后通过`toHex().toUpper()`得到16进制的Unicode编码。...

    Qt中的字符编码转换:UTF8、Unicode、GBK、ASCII、16进制字符、16进制数值

    2. **GBK到Unicode/UTF-8**:可以使用`QTextCodec::codecForName("GBK")`创建编码器,然后调用`fromUnicode()`或`toUnicode()`方法完成转换。 3. **Unicode/UTF-8到GBK**:与上述相反,使用`toLocal8Bit()`或`...

    GBK与UTF8编码转换的QT4源码

    之后,可以使用这些对象的fromUnicode()和toUnicode()方法进行编码转换。 以下是可能的转换流程: 1. 首先,加载GBK编码的文本文件。QT4中的QFile类可以用来读取文件,然后使用QDataStream或QTextStream来处理文件...

    GBK Unicode UTF8码的相互转换源程序(C#语言)

    string utf8FromUnicode = Encoding.UTF8.GetString(utf16ToUtf8Bytes); Console.WriteLine($"GBK -&gt; UTF-8: {utf8String}"); Console.WriteLine($"UTF-8 -&gt; GBK: {gbkString}"); Console.WriteLine($"UTF-8 -&gt;...

    中文转 QByteArray+QByteArray转换为中文

    QByteArray gbkBytes = codec-&gt;fromUnicode(s); qDebug() 编码:" ; ``` #### 二、QByteArray转换为中文 与中文转`QByteArray`相反,将`QByteArray`转换回中文字符串的过程同样可以通过多种方式实现: 1. **使用...

    Qt+http+get

    要将这样的Unicode字符串转换为可显示的中文字符,你可以使用`QString`的`fromUtf8()`或`fromUnicode()`方法。这里我们先将字符串转换为UTF8格式,然后解析为`QString`: ```cpp QString str = "hello \\u3456\\u...

    字符串处理类:将GBK,UTF8字符串转化为Unicode编码的php类库.zip

    3. **调用转换方法**:类库通常会提供转换方法,如`toUnicode()`和`fromUnicode()`,分别用于将GBK或UTF8字符串转为Unicode,以及将Unicode转回GBK或UTF8。根据实际需求,调用相应的方法并传入要转换的字符串。 4. ...

    GBK源码转UTF8格式(QT源码)

    通过`QTextCodec::codecForName()`函数获取GBK或UTF-8的编码对象,然后使用`fromUnicode()`和`toUnicode()`方法进行转换。 3. **使用外部工具**:压缩包内的`Gbk2utf8`文件可能是一个脚本或程序,用于批量转换整个...

    qt实现转换文件字符集编码

    QByteArray utf8Data = utf8Codec-&gt;fromUnicode(sourceText); // 创建目标文件 QFile targetFile("target_file.txt"); if (!targetFile.open(QIODevice::WriteOnly)) { // 处理写入失败的情况 } // 写入UTF-8字节...

    ARM开发学习笔记

    QByteArray carNumber2 = QTextCodec::codecForName("gb2312")-&gt;fromUnicode(carNumber); ``` #### String与Byte之间的转换 - **将字符串转换为Byte**: ```cpp SpeedC[0] = Convert.ToByte(textBox_HH.Text, ...

    aardio编程问题集锦与实战

    var chineseChar = fromUnicode(unicode); console.log("Unicode:", unicode, "对应的中文字符:", chineseChar); ``` ### 第4篇 aardio 实例 这一章节可能涉及了多个具体的编程实例,由于内容未完全给出,这里...

    Qt中文环境的搭建及对常用输入设备的支持

    QString decodedStr = codec-&gt;toUnicode(codec-&gt;fromUnicode(str)); ``` ##### 1.3 设置中文字体 Qt默认使用的字体并不支持中文显示。为了使中文正确显示,可以设置支持中文的字体,如“unifont”。可以通过以下两...

    QT中文转换方法

    char *cstr = codec-&gt;fromUnicode(qstr).data(); ``` ### 3. `std::string`与`QString`之间的转换 #### (1) `std::string`转换为`QString` 将`std::string`转换为`QString`可以通过`QString::fromStdString()`来...

    基于Qt开发的第三方类

    QByteArray encodedString = codec-&gt;fromUnicode(string); ``` #### 五、常见问题及解决办法 在使用QextSerialPort开发过程中可能会遇到各种问题,以下是一些常见的问题及其解决方案: 1. **编译通过但程序意外...

    trit-text:5尾文字编码

    var fromUnicode = require('trit-text').fromUnicode; var fromEvent = require('trit-text').fromEvent; var allUnicode = require('trit-text').allUnicode; var toTritmap9x14 = require('trit-text').toTritmap...

    Qt 扩展ASCII表与八进制、十六进制间转换

    QTextCodec 字符编码与16进制数据转换 QTextCodec *codec = QTextCodec::codecForName("KOI8-R"); QString string = codec-&gt;toUnicode(encodedString);...QByteArray encodedString = codec-&gt;fromUnicode(string);

Global site tag (gtag.js) - Google Analytics