From c8e08eab27a988feb80ff3e93a5c64bd07eb05e0 Mon Sep 17 00:00:00 2001 From: Olyutorskii Date: Wed, 25 May 2011 23:25:51 +0900 Subject: [PATCH] =?utf8?q?=E3=83=9B=E3=83=AC=E3=83=AA=E3=82=B9=E6=96=87?= =?utf8?q?=E5=AD=97=E5=88=97=E8=AA=AD=E3=81=BF=E8=BE=BC=E3=81=BF=E3=81=AB?= =?utf8?q?=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../sourceforge/mikutoga/parser/CommonParser.java | 45 +++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/src/main/java/jp/sourceforge/mikutoga/parser/CommonParser.java b/src/main/java/jp/sourceforge/mikutoga/parser/CommonParser.java index d64b52e..6e3369a 100644 --- a/src/main/java/jp/sourceforge/mikutoga/parser/CommonParser.java +++ b/src/main/java/jp/sourceforge/mikutoga/parser/CommonParser.java @@ -259,7 +259,6 @@ public class CommonParser { * IO入力は指定バイト数だけ読み進められる。 * ゼロ終端が見つからないまま指定バイト数が読み込み終わった場合、 * そこまでのデータから文字列を構成する。 - * * @param maxlen 読み込みバイト数 * @return デコードされた文字列 * @throws IOException IOエラー @@ -278,4 +277,48 @@ public class CommonParser { return result; } + /** + * 4byte整数によるバイト列長とそれに続くUTF8バイト列を + * 文字にデコードする。 + * @return デコードされた文字列。 + * @throws IOException IOエラー + * @throws MmdEofException 予期せぬ入力終端 + * @throws MmdFormatException 不正な文字エンコーディングが検出された。 + */ + protected String parseHollerithUtf8() + throws IOException, + MmdEofException, + MmdFormatException { + int byteLen = this.source.parseInteger(); + + CharBuffer encoded = + this.decoderUTF8.parseString(this.source, byteLen); + + String result = encoded.toString(); + + return result; + } + + /** + * 4byte整数によるバイト列長とそれに続くUTF16-LEバイト列を + * 文字にデコードする。 + * @return デコードされた文字列。 + * @throws IOException IOエラー + * @throws MmdEofException 予期せぬ入力終端 + * @throws MmdFormatException 不正な文字エンコーディングが検出された。 + */ + protected String parseHollerithUtf16LE() + throws IOException, + MmdEofException, + MmdFormatException { + int byteLen = this.source.parseInteger(); + + CharBuffer encoded = + this.decoderUTF16LE.parseString(this.source, byteLen); + + String result = encoded.toString(); + + return result; + } + } -- 2.11.0