utf16encoder.java

来自「Java有关XML编程需要用到axis 的源代码 把里面bin下的包导入相应」· Java 代码 · 共 95 行

JAVA
95
字号
/* * Copyright 2001-2004 The Apache Software Foundation. *  * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *  *      http://www.apache.org/licenses/LICENSE-2.0 *  * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.axis.components.encoding;import org.apache.axis.i18n.Messages;import java.io.IOException;import java.io.Writer;/** * UTF-16 Encoder. *  * @author <a href="mailto:jens@void.fm">Jens Schumann</a> * @see <a href="http://encoding.org">encoding.org</a> * @see <a href="http://czyborra.com/utf/#UTF-16">UTF 16 explained</a> */class UTF16Encoder extends AbstractXMLEncoder {    /**     * gets the encoding supported by this encoder     * @return string     */    public String getEncoding() {        return XMLEncoderFactory.ENCODING_UTF_16;    }    /**     * write the encoded version of a given string     *      * @param writer    writer to write this string to     * @param xmlString string to be encoded     */    public void writeEncoded(Writer writer, String xmlString)            throws IOException {        if (xmlString == null) {            return;        }        int length = xmlString.length();        char character;        for (int i = 0; i < length; i++) {            character = xmlString.charAt( i );            switch (character) {                // we don't care about single quotes since axis will                // use double quotes anyway                case '&':                    writer.write(AMP);                    break;                case '"':                    writer.write(QUOTE);                    break;                case '<':                    writer.write(LESS);                    break;                case '>':                    writer.write(GREATER);                    break;                case '\n':                    writer.write(LF);                    break;                case '\r':                    writer.write(CR);                    break;                case '\t':                    writer.write(TAB);                    break;                default:                    if (character < 0x20) {                        throw new IllegalArgumentException(Messages.getMessage(                                "invalidXmlCharacter00",                                Integer.toHexString(character),                                xmlString.substring(0, i)));                    } else if (character > 0xFFFF) {                        writer.write((0xD7C0 + (character >> 10)));                        writer.write((0xDC00 | character & 0x3FF));                    } else {                        writer.write(character);                    }                    break;            }        }    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?