英語混在文字列取られたJava

文字列を書き込むためのクリッピング機能、文字列を入力し、バイト数で、出力はバイト列を撮影したものです。しかし、文字は、そのような「マイABC」4の半分を、カットされないことを保証するために、「I AB」としてカット「マイABC漢DEF」、6を入力して、「マイABC」の代わりに「私のABC +漢半分として出力する必要がありますする必要がありますA。 "
中国は2バイトであり、英語が1バイトで占められている- GB2312、GBK、GB18030、CP936とCNS11643条件が満たされています。異なる符号化のバイトに中国語バイトので、バイト長は変換どこし、符号化は、3つのバイトを表すバイトに中国語文字列をUTF-8である。

パッケージcom.suanfa、
インポートするJava .io.UnsupportedEncodingException;

パブリッククラスCharactersSplit {
    / **
     * @param対象テキスト文字列
     * @param長切片長
     * @paramエンコード符号化方式を採用
     * @return
     * @throwsにUnsupportedEncodingException
     * /

    パブリック静的ストリングストリング(文字列テキスト、長さintは、文字エンコードは)
            にUnsupportedEncodingException {スロー
        ){IF(テキスト== NULLを
            ヌルを返します。
        }
        StringBuilderのSB =新規のStringBuilder();
        int型currentLength = 0;
        (チャーC:text.toCharArray())のために{
            currentLength + = String.valueOf(C).getBytes(エンコード).LENGTH。
            IF(currentLength <=長さ){
                sb.append(C);
            }他{
                破ります。
            }
        }
        )(sb.toStringを返します。
    }

    公共の静的な無効メイン(文字列[]引数)にUnsupportedEncodingException {スロー
        文字列のテキスト= "我ABC汉DEFを";
        int型長さ1 = 3;
        int型長さ2 = 6;
        文字列[]エンコード=新しいString [] { "2312"、 "GBK"、 "GB18030"、 "CP936"、
                "CNS11643"、 "UTF-8"}。
        {(エンコード文字エンコード)するため
            。のSystem.out.println(新規のStringBuilder()付加( "用").append(エンコード)
                    ).append(テキスト).append - .append( "【编码截取字符串" ( "】")
                    .append(長さ1).append( "个字节的结果是【")
                    。.append(ストリング(テキスト、長さ1、エンコード))付加( "】")
                    .toString());
            System.out.println(新しいのStringBuilder()追加( "用").append(エンコード)。
                    .append( "编码截取字符串- 【").append(テキスト).append( "】"

                    。.append(ストリング(テキスト、LENGTH2 、エンコード))( "追加]")
                    .toStringを());
        }
    }
}
の出力を実行した後:
GB2312コード列を傍受- [I] ABC DEF 3ハンバイト結果は、[I]は
中国のABC DEF結果[I]である6バイト[I] ABC -インターセプトGB2312コード列
ハン[I] ABC DEF 3バイト-取らGBKエンコーディング列その結果、[I]ということである
中国のABC DEF結果[I] 6バイト[I] ABC -でインターセプト列GBKエンコーディングが
[I] ABC DEF 3ハンバイト-取らエンコードされた文字列のGB18030結果は[I]ということである
GB18030コードインターセプト列-中国語ABC DEF結果[I]が6バイトである[I] ABC
取らCP936ストリング符号化された- [I] ABC DEF 3バイトハンその結果、[I]ということである
中国のABC DEF結果[I] 6バイト[I] ABC -でインターセプト符号化された文字列CP936は、
ハン[I] ABC DEF 3バイト-取らエンコードされた文字列CNS11643結果はである[I]
インターセプト符号化された文字列CNS11643 -中国語ABC DEF結果[I]は6バイトである[I] ABC
UTF-8でエンコードされた取得した文字列- [ABC I DEF] 3バイトの結果があることである[I]
UTF-8での傍受文字列 - 結果ハンABC DEF [I]が6バイト[I] ABCです

おすすめ

転載: www.cnblogs.com/zhangkaimin/p/11118240.html