OSDN Git Service

クラスメンバ定義順を統一
[jindolf/JinParser.git] / src / main / java / jp / sourceforge / jindolf / parser / ShiftJis.java
1 /*\r
2  * Shift_JIS encoding utilities\r
3  *\r
4  * License : The MIT License\r
5  * Copyright(c) 2009 olyutorskii\r
6  */\r
7 \r
8 package jp.sourceforge.jindolf.parser;\r
9 \r
10 import java.nio.charset.Charset;\r
11 \r
12 /**\r
13  * シフトJIS符号化ユーティリティ。\r
14  * JIS X0208:1997 準拠。(Windows-31Jではない!)\r
15  * @see <a href="http://www.iana.org/assignments/character-sets">\r
16  * CHARACTER SETS</a>\r
17  * @see <a href="http://ja.wikipedia.org/wiki/Shift_JIS">\r
18  * Wikipedia: Shift_JIS</a>\r
19  */\r
20 public final class ShiftJis{\r
21 \r
22     /** エンコード名。 */\r
23     public static final String ENCODE_NAME = "Shift_JIS";\r
24     /** SHift_JIS用Charsetインスタンス。 */\r
25     public static final Charset CHARSET = Charset.forName(ENCODE_NAME);\r
26     /** char1文字をエンコードした時の最大バイト数。 */\r
27     public static final int MAX_BYTES_PER_CHAR = 2;\r
28 \r
29 \r
30     /**\r
31      * 隠しコンストラクタ。\r
32      */\r
33     private ShiftJis(){\r
34         super();\r
35         return;\r
36     }\r
37 \r
38 \r
39     /**\r
40      * 任意のバイト値がシフトJISの1バイト目でありうるか否か判定する。\r
41      * 文字集合の判定は行わない。\r
42      * @param bval バイト値\r
43      * @return シフトJISの1バイト目でありうるならtrue\r
44      */\r
45     public static boolean isShiftJIS1stByte(byte bval){\r
46         if(   (byte)0x81 <= bval && bval <= (byte)0x9f\r
47            || (byte)0xe0 <= bval && bval <= (byte)0xfc){\r
48             return true;\r
49         }\r
50         return false;\r
51     }\r
52 \r
53     /**\r
54      * 任意のバイト値がシフトJISの2バイト目でありうるか否か判定する。\r
55      * 文字集合の判定は行わない。\r
56      * @param bval バイト値\r
57      * @return シフトJISの2バイト目でありうるならtrue\r
58      */\r
59     public static boolean isShiftJIS2ndByte(byte bval){\r
60         if(   (byte)0x40 <= bval && bval <= (byte)0x7e\r
61            || (byte)0x80 <= bval && bval <= (byte)0xfc){\r
62             return true;\r
63         }\r
64         return false;\r
65     }\r
66 \r
67     /**\r
68      * 任意のバイト値ペアがシフトJISでありうるか否か判定する。\r
69      * 文字集合の判定は行わない。\r
70      * @param b1st 第一バイト値\r
71      * @param b2nd 第二バイト値\r
72      * @return シフトJISならtrue\r
73      */\r
74     public static boolean isShiftJIS(byte b1st, byte b2nd){\r
75         if(   ShiftJis.isShiftJIS1stByte(b1st)\r
76            && ShiftJis.isShiftJIS2ndByte(b2nd)){\r
77             return true;\r
78         }\r
79         return false;\r
80     }\r
81 \r
82 }\r