/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：顧客契約管理システム
*   ソースファイル名：JKKStringConverter.java
*   作成者          ：富士通
*   日付            ：2012年06月21日
*＜機能概要＞
*   文字列変換部品クラスです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2012/06/21   FJ          新規作成
*   v4.00.00    2012/12/28   FJ)赤穂    【IT1-2012-0002604】
*   v5.00.00    2013/05/30   FJ)団      【IT1-2013-0001249】障害対応
*   v5.00.01    2013/08/01   FJ)藤本    【KT1-2013-0000784】半角カナ→全角カナ修正
*  v33.00.00    2017/07/25   FJ)山地    【ANK-3183-00-00】(客C)工事入力画面での全角への自動変換
**********************************************************************/

package eo.common.util;

/**
  * <dl>
  *   <dd>クラス名：文字列変換部品クラス
  *   <dd>備考：<br>
  * </dl>
  * @author 富士通
  */

public class JKKStringConverter
{
	
	/**
	 * 引数がNULLの場合のエラーメッセージを表します。
	 */
	private static final String ERROR_NULL_ARGUNMENT = "Argunment is NULL.";
	
	/**
	 * 半角カタカナ文字データテーブル
	 */
	private static final String[][] HANKAKU_KATAKANA = {
														{ "ｧ", "ｨ", "ｩ", "ｪ", "ｫ" },
														{ "ｬ", "ｭ", "ｮ", "ｯ", "ｰ" },
														
														{ "ｱ", "ｵ" },
														{ "ﾅ", "ﾆ", "ﾇ", "ﾈ", "ﾉ" },
														{ "ﾗ", "ﾘ", "ﾙ", "ﾚ", "ﾛ" },
														{ "ﾏ", "ﾐ", "ﾑ", "ﾒ", "ﾓ" },
														{ "ﾔ", "ﾕ", "ﾖ", "ﾝ", "ﾞ", "ﾟ" },
														
														{ "ｶ", "ｷ", "ｸ", "ｹ", "ｺ" },
														{ "ｻ", "ｼ", "ｽ", "ｾ", "ｿ" },
														{ "ﾀ", "ﾁ", "ﾂ", "ﾃ", "ﾄ" },
														{ "ﾊ", "ﾋ", "ﾌ", "ﾍ", "ﾎ" },
														{ "ｳ", "ﾜ", "ｦ", "ｲ", "ｴ" },
														
														{ "ｶﾞ", "ｷﾞ", "ｸﾞ", "ｹﾞ", "ｺﾞ" },
														{ "ｻﾞ", "ｼﾞ", "ｽﾞ", "ｾﾞ", "ｿﾞ" },
														{ "ﾀﾞ", "ﾁﾞ", "ﾂﾞ", "ﾃﾞ", "ﾄﾞ" },
														{ "ﾊﾞ", "ﾋﾞ", "ﾌﾞ", "ﾍﾞ", "ﾎﾞ" },
														{ "ｳﾞ", "ﾜﾞ", "ｦﾞ", "ｲﾞ", "ｴﾞ" },
														{ "ﾊﾟ", "ﾋﾟ", "ﾌﾟ", "ﾍﾟ", "ﾎﾟ" },
														
														{ "｡", "｢", "｣", "､", "･", "-", "-" },
														
														{ "~", "`", "'", "\"", "\\", "ｶ", "ｹ" } };
	
	/**
	 * 全角カタカナ文字データテーブル
	 */
	private static final String[][] ZENKAKU_KATAKANA = {
														{ "ァ", "ィ", "ゥ", "ェ", "ォ" },
														{ "ャ", "ュ", "ョ", "ッ", "ー" },
														
														{ "ア", "オ" },
														{ "ナ", "ニ", "ヌ", "ネ", "ノ" },
														{ "ラ", "リ", "ル", "レ", "ロ" },
														{ "マ", "ミ", "ム", "メ", "モ" },
														{ "ヤ", "ユ", "ヨ", "ン", "゛", "゜" },
														
														{ "カ", "キ", "ク", "ケ", "コ" },
														{ "サ", "シ", "ス", "セ", "ソ" },
														{ "タ", "チ", "ツ", "テ", "ト" },
														{ "ハ", "ヒ", "フ", "ヘ", "ホ" },
														{ "ウ", "ワ", "ヲ", "イ", "エ" },
														
														{ "ガ", "ギ", "グ", "ゲ", "ゴ" },
														{ "ザ", "ジ", "ズ", "ゼ", "ゾ" },
														{ "ダ", "ヂ", "ヅ", "デ", "ド" },
														{ "バ", "ビ", "ブ", "ベ", "ボ" },
														{ "ヴ", "\u30f7", "\u30fa", "\u30f8", "\u30f9" },
														{ "パ", "ピ", "プ", "ペ", "ポ" },
														
														{ "。", "「", "」", "、", "・", "―", "‐" },
														
														{ "￣", "‘", "’", "”", "￥", "ヵ", "ヶ" } };
	
	
	/**
	 * 半角カタカナ文字データテーブル
	 */
	private static final String[][] HANKAKU_KATAKANA_FULL = {
														{ "ｧ", "ｨ", "ｩ", "ｪ", "ｫ" },
														{ "ｬ", "ｭ", "ｮ", "ｯ", "ｰ" },
														
														{ "ｱ", "ｵ" },
														{ "ﾅ", "ﾆ", "ﾇ", "ﾈ", "ﾉ" },
														{ "ﾗ", "ﾘ", "ﾙ", "ﾚ", "ﾛ" },
														{ "ﾏ", "ﾐ", "ﾑ", "ﾒ", "ﾓ" },
														{ "ﾔ", "ﾕ", "ﾖ", "ﾝ", "ﾞ", "ﾟ" },
														
														{ "ｶ", "ｷ", "ｸ", "ｹ", "ｺ" },
														{ "ｻ", "ｼ", "ｽ", "ｾ", "ｿ" },
														{ "ﾀ", "ﾁ", "ﾂ", "ﾃ", "ﾄ" },
														{ "ﾊ", "ﾋ", "ﾌ", "ﾍ", "ﾎ" },
														{ "ｳ", "ﾜ", "ｦ", "ｲ", "ｴ" },
														
														{ "ｶﾞ", "ｷﾞ", "ｸﾞ", "ｹﾞ", "ｺﾞ" },
														{ "ｻﾞ", "ｼﾞ", "ｽﾞ", "ｾﾞ", "ｿﾞ" },
														{ "ﾀﾞ", "ﾁﾞ", "ﾂﾞ", "ﾃﾞ", "ﾄﾞ" },
														{ "ﾊﾞ", "ﾋﾞ", "ﾌﾞ", "ﾍﾞ", "ﾎﾞ" },
														{ "ｳﾞ", "ﾜﾞ", "ｦﾞ", "ｲﾞ", "ｴﾞ" },
														{ "ﾊﾟ", "ﾋﾟ", "ﾌﾟ", "ﾍﾟ", "ﾎﾟ" },
														
														{ "｡", "｢", "｣", "､", "･", "-", "-" },
														
														{ "~", "`", "'", "\"", "\\" } };
	
	/**
	 * 全角カタカナ文字データテーブル
	 */
	private static final String[][] ZENKAKU_KATAKANA_FULL = {
														{ "ァ", "ィ", "ゥ", "ェ", "ォ" },
														{ "ャ", "ュ", "ョ", "ッ", "ー" },
														
														{ "ア", "オ" },
														{ "ナ", "ニ", "ヌ", "ネ", "ノ" },
														{ "ラ", "リ", "ル", "レ", "ロ" },
														{ "マ", "ミ", "ム", "メ", "モ" },
														{ "ヤ", "ユ", "ヨ", "ン", "゛", "゜" },
														
														{ "カ", "キ", "ク", "ケ", "コ" },
														{ "サ", "シ", "ス", "セ", "ソ" },
														{ "タ", "チ", "ツ", "テ", "ト" },
														{ "ハ", "ヒ", "フ", "ヘ", "ホ" },
														{ "ウ", "ワ", "ヲ", "イ", "エ" },
														
														{ "ガ", "ギ", "グ", "ゲ", "ゴ" },
														{ "ザ", "ジ", "ズ", "ゼ", "ゾ" },
														{ "ダ", "ヂ", "ヅ", "デ", "ド" },
														{ "バ", "ビ", "ブ", "ベ", "ボ" },
														{ "ヴ", "\u30f7", "\u30fa", "\u30f8", "\u30f9" },
														{ "パ", "ピ", "プ", "ペ", "ポ" },
														
														{ "。", "「", "」", "、", "・", "―", "‐" },
														
														{ "￣", "‘", "’", "”", "￥" } };	
	
	/**
	 * <dl>
	 * <dd>コンストラクタ説明：このクラスのインスタンスを生成できないように private 宣言しておきます。
	 * </dl>
	 */
	private JKKStringConverter()
	{
		
	}
	
	/**
	 * <dl>
	 * <dd>メソッド名：	半角変換処理
	 * <dd>メソッド説明：全角文字を半角文字に変換します。
	 * <dd>備考：<br>
	 *          <p>変換可能な全角文字の範囲と変換パターンは下記の表を参照してください。<br>
	 *          　全角英数字 → 半角英数字　表1<br>
	 *          　全角カタカナ → 半角カタカナ　表2<br>
	 *          <p>表にある文字以外は変換せずにそのままにします。
	 * <FONT FACE="ＭＳ ゴシック">
	 * <table border=0>
	 * <tr>
	 * <td valign=left>
	 * <table border="2">
	 * <tr><th colspan=2>表1 全角英数字→半角英数字<th></tr>
	 * <tr><td>　<br>&#92;u3000</td><td> <br>&#92;u0020</td></tr>
	 * <tr><td>！<br>&#92;uFF01</td><td>!<br>&#92;u0021</td></tr>
	 * <tr><td>W<br>&#92;uFF02</td><td>"<br>&#92;u0022</td></tr>
	 * <tr><td>＃<br>&#92;uFF03</td><td>#<br>&#92;u0023</td></tr>
	 * <tr><td>＄<br>&#92;uFF04</td><td>$<br>&#92;u0024</td></tr>
	 * <tr><td>％<br>&#92;uFF05</td><td>%<br>&#92;u0025</td></tr>
	 * <tr><td>＆<br>&#92;uFF06</td><td>&<br>&#92;u0026</td></tr>
	 * <tr><td>V<br>&#92;uFF07</td><td>'<br>&#92;u0027</td></tr>
	 * <tr><td>（<br>&#92;uFF08</td><td>(<br>&#92;u0028</td></tr>
	 * <tr><td>）<br>&#92;uFF09</td><td>)<br>&#92;u0029</td></tr>
	 * <tr><td>＊<br>&#92;uFF0A</td><td>*<br>&#92;u002A</td></tr>
	 * <tr><td>＋<br>&#92;uFF0B</td><td>+<br>&#92;u002B</td></tr>
	 * <tr><td>，<br>&#92;uFF0C</td><td>,<br>&#92;u002C</td></tr>
	 * <tr><td>−<br>&#92;uFF0D</td><td>-<br>&#92;u002D</td></tr>
	 * <tr><td>．<br>&#92;uFF0E</td><td>.<br>&#92;u002E</td></tr>
	 * <tr><td>／<br>&#92;uFF0F</td><td>/<br>&#92;u002F</td></tr>
	 * <tr><td>０<br>&#92;uFF10</td><td>0<br>&#92;u0030</td></tr>
	 * <tr><td>１<br>&#92;uFF11</td><td>1<br>&#92;u0031</td></tr>
	 * <tr><td>２<br>&#92;uFF12</td><td>2<br>&#92;u0032</td></tr>
	 * <tr><td>３<br>&#92;uFF13</td><td>3<br>&#92;u0033</td></tr>
	 * <tr><td>４<br>&#92;uFF14</td><td>4<br>&#92;u0034</td></tr>
	 * <tr><td>５<br>&#92;uFF15</td><td>5<br>&#92;u0035</td></tr>
	 * <tr><td>６<br>&#92;uFF16</td><td>6<br>&#92;u0036</td></tr>
	 * <tr><td>７<br>&#92;uFF17</td><td>7<br>&#92;u0037</td></tr>
	 * <tr><td>８<br>&#92;uFF18</td><td>8<br>&#92;u0038</td></tr>
	 * <tr><td>９<br>&#92;uFF19</td><td>9<br>&#92;u0039</td></tr>
	 * <tr><td>：<br>&#92;uFF1A</td><td>:<br>&#92;u003A</td></tr>
	 * <tr><td>；<br>&#92;uFF1B</td><td>;<br>&#92;u003B</td></tr>
	 * <tr><td>＜<br>&#92;uFF1C</td><td><<br>&#92;u003C</td></tr>
	 * <tr><td>＝<br>&#92;uFF1D</td><td>=<br>&#92;u003D</td></tr>
	 * <tr><td>＞<br>&#92;uFF1E</td><td>><br>&#92;u003E</td></tr>
	 * <tr><td>？<br>&#92;uFF1F</td><td>?<br>&#92;u003F</td></tr>
	 * <tr><td>＠<br>&#92;uFF20</td><td>@<br>&#92;u0040</td></tr>
	 * <tr><td>Ａ<br>&#92;uFF21</td><td>A<br>&#92;u0041</td></tr>
	 * <tr><td>Ｂ<br>&#92;uFF22</td><td>B<br>&#92;u0042</td></tr>
	 * <tr><td>Ｃ<br>&#92;uFF23</td><td>C<br>&#92;u0043</td></tr>
	 * <tr><td>Ｄ<br>&#92;uFF24</td><td>D<br>&#92;u0044</td></tr>
	 * <tr><td>Ｅ<br>&#92;uFF25</td><td>E<br>&#92;u0045</td></tr>
	 * <tr><td>Ｆ<br>&#92;uFF26</td><td>F<br>&#92;u0046</td></tr>
	 * <tr><td>Ｇ<br>&#92;uFF27</td><td>G<br>&#92;u0047</td></tr>
	 * <tr><td>Ｈ<br>&#92;uFF28</td><td>H<br>&#92;u0048</td></tr>
	 * <tr><td>Ｉ<br>&#92;uFF29</td><td>I<br>&#92;u0049</td></tr>
	 * <tr><td>Ｊ<br>&#92;uFF2A</td><td>J<br>&#92;u004A</td></tr>
	 * <tr><td>Ｋ<br>&#92;uFF2B</td><td>K<br>&#92;u004B</td></tr>
	 * <tr><td>Ｌ<br>&#92;uFF2C</td><td>L<br>&#92;u004C</td></tr>
	 * <tr><td>Ｍ<br>&#92;uFF2D</td><td>M<br>&#92;u004D</td></tr>
	 * <tr><td>Ｎ<br>&#92;uFF2E</td><td>N<br>&#92;u004E</td></tr>
	 * <tr><td>Ｏ<br>&#92;uFF2F</td><td>O<br>&#92;u004F</td></tr>
	 * <tr><td>Ｐ<br>&#92;uFF30</td><td>P<br>&#92;u0050</td></tr>
	 * <tr><td>Ｑ<br>&#92;uFF31</td><td>Q<br>&#92;u0051</td></tr>
	 * <tr><td>Ｒ<br>&#92;uFF32</td><td>R<br>&#92;u0052</td></tr>
	 * <tr><td>Ｓ<br>&#92;uFF33</td><td>S<br>&#92;u0053</td></tr>
	 * <tr><td>Ｔ<br>&#92;uFF34</td><td>T<br>&#92;u0054</td></tr>
	 * <tr><td>Ｕ<br>&#92;uFF35</td><td>U<br>&#92;u0055</td></tr>
	 * <tr><td>Ｖ<br>&#92;uFF36</td><td>V<br>&#92;u0056</td></tr>
	 * <tr><td>Ｗ<br>&#92;uFF37</td><td>W<br>&#92;u0057</td></tr>
	 * <tr><td>Ｘ<br>&#92;uFF38</td><td>X<br>&#92;u0058</td></tr>
	 * <tr><td>Ｙ<br>&#92;uFF39</td><td>Y<br>&#92;u0059</td></tr>
	 * <tr><td>Ｚ<br>&#92;uFF3A</td><td>Z<br>&#92;u005A</td></tr>
	 * <tr><td>［<br>&#92;uFF3B</td><td>[<br>&#92;u005B</td></tr>
	 * <tr><td>＼<br>&#92;uFF3C</td><td>\<br>&#92;u005C</td></tr>
	 * <tr><td>］<br>&#92;uFF3D</td><td>]<br>&#92;u005D</td></tr>
	 * <tr><td>＾<br>&#92;uFF3E</td><td>^<br>&#92;u005E</td></tr>
	 * <tr><td>＿<br>&#92;uFF3F</td><td>_<br>&#92;u005F</td></tr>
	 * <tr><td>｀<br>&#92;uFF40</td><td>`<br>&#92;u0060</td></tr>
	 * <tr><td>ａ<br>&#92;uFF41</td><td>a<br>&#92;u0061</td></tr>
	 * <tr><td>ｂ<br>&#92;uFF42</td><td>b<br>&#92;u0062</td></tr>
	 * <tr><td>ｃ<br>&#92;uFF43</td><td>c<br>&#92;u0063</td></tr>
	 * <tr><td>ｄ<br>&#92;uFF44</td><td>d<br>&#92;u0064</td></tr>
	 * <tr><td>ｅ<br>&#92;uFF45</td><td>e<br>&#92;u0065</td></tr>
	 * <tr><td>ｆ<br>&#92;uFF46</td><td>f<br>&#92;u0066</td></tr>
	 * <tr><td>ｇ<br>&#92;uFF47</td><td>g<br>&#92;u0067</td></tr>
	 * <tr><td>ｈ<br>&#92;uFF48</td><td>h<br>&#92;u0068</td></tr>
	 * <tr><td>ｉ<br>&#92;uFF49</td><td>i<br>&#92;u0069</td></tr>
	 * <tr><td>ｊ<br>&#92;uFF4A</td><td>j<br>&#92;u006A</td></tr>
	 * <tr><td>ｋ<br>&#92;uFF4B</td><td>k<br>&#92;u006B</td></tr>
	 * <tr><td>ｌ<br>&#92;uFF4C</td><td>l<br>&#92;u006C</td></tr>
	 * <tr><td>ｍ<br>&#92;uFF4D</td><td>m<br>&#92;u006D</td></tr>
	 * <tr><td>ｎ<br>&#92;uFF4E</td><td>n<br>&#92;u006E</td></tr>
	 * <tr><td>ｏ<br>&#92;uFF4F</td><td>o<br>&#92;u006F</td></tr>
	 * <tr><td>ｐ<br>&#92;uFF50</td><td>p<br>&#92;u0070</td></tr>
	 * <tr><td>ｑ<br>&#92;uFF51</td><td>q<br>&#92;u0071</td></tr>
	 * <tr><td>ｒ<br>&#92;uFF52</td><td>r<br>&#92;u0072</td></tr>
	 * <tr><td>ｓ<br>&#92;uFF53</td><td>s<br>&#92;u0073</td></tr>
	 * <tr><td>ｔ<br>&#92;uFF54</td><td>t<br>&#92;u0074</td></tr>
	 * <tr><td>ｕ<br>&#92;uFF55</td><td>u<br>&#92;u0075</td></tr>
	 * <tr><td>ｖ<br>&#92;uFF56</td><td>v<br>&#92;u0076</td></tr>
	 * <tr><td>ｗ<br>&#92;uFF57</td><td>w<br>&#92;u0077</td></tr>
	 * <tr><td>ｘ<br>&#92;uFF58</td><td>x<br>&#92;u0078</td></tr>
	 * <tr><td>ｙ<br>&#92;uFF59</td><td>y<br>&#92;u0079</td></tr>
	 * <tr><td>ｚ<br>&#92;uFF5A</td><td>z<br>&#92;u007A</td></tr>
	 * <tr><td>｛<br>&#92;uFF5B</td><td>{<br>&#92;u007B</td></tr>
	 * <tr><td>｜<br>&#92;uFF5C</td><td>|<br>&#92;u007C</td></tr>
	 * <tr><td>｝<br>&#92;uFF5D</td><td>}<br>&#92;u007D</td></tr>
	 * <tr><td>〜<br>&#92;uFF5E</td><td>~<br>&#92;u007E</td></tr>
	 * </table>
	 * </td>
	 * <td valign=left>
	 * <table border="2">
	 * <tr><th colspan=2>表2 全角カタカナ→半角カタカナ<th></tr>
	 * <tr><td>。<br>&#92;u3002</td><td>｡<br>&#92;uFF61</td>               </tr>
	 * <tr><td>「<br>&#92;u300C</td><td>｢<br>&#92;uFF62</td>               </tr>
	 * <tr><td>」<br>&#92;u300D</td><td>｣<br>&#92;uFF63</td>               </tr>
	 * <tr><td>、<br>&#92;u3001</td><td>､<br>&#92;uFF64</td>               </tr>
	 * <tr><td>・<br>&#92;u30FB</td><td>･<br>&#92;uFF65</td>               </tr>
	 * <tr><td>ヲ<br>&#92;u30F2</td><td>ｦ<br>&#92;uFF66</td>               </tr>
	 * <tr><td>ァ<br>&#92;u30A1</td><td>ｧ<br>&#92;uFF67</td>               </tr>
	 * <tr><td>ィ<br>&#92;u30A3</td><td>ｨ<br>&#92;uFF68</td>               </tr>
	 * <tr><td>ゥ<br>&#92;u30A5</td><td>ｩ<br>&#92;uFF69</td>               </tr>
	 * <tr><td>ェ<br>&#92;u30A7</td><td>ｪ<br>&#92;uFF6A</td>               </tr>
	 * <tr><td>ォ<br>&#92;u30A9</td><td>ｫ<br>&#92;uFF6B</td>               </tr>
	 * <tr><td>ャ<br>&#92;u30E3</td><td>ｬ<br>&#92;uFF6C</td>               </tr>
	 * <tr><td>ュ<br>&#92;u30E5</td><td>ｭ<br>&#92;uFF6D</td>               </tr>
	 * <tr><td>ョ<br>&#92;u30E7</td><td>ｮ<br>&#92;uFF6E</td>               </tr>
	 * <tr><td>ッ<br>&#92;u30C3</td><td>ｯ<br>&#92;uFF6F</td>               </tr>
	 * <tr><td>ー<br>&#92;u30FC</td><td>ｰ<br>&#92;uFF70</td>               </tr>
	 * <tr><td>ア<br>&#92;u30A2</td><td>ｱ<br>&#92;uFF71</td>               </tr>
	 * <tr><td>イ<br>&#92;u30A2</td><td>ｲ<br>&#92;uFF72</td>               </tr>
	 * <tr><td>ウ<br>&#92;u30A6</td><td>ｳ<br>&#92;uFF73</td>               </tr>
	 * <tr><td>エ<br>&#92;u30A8</td><td>ｴ<br>&#92;uFF74</td>               </tr>
	 * <tr><td>オ<br>&#92;u30AA</td><td>ｵ<br>&#92;uFF75</td>               </tr>
	 * <tr><td>カ<br>&#92;u30AB</td><td>ｶ<br>&#92;uFF76</td>               </tr>
	 * <tr><td>キ<br>&#92;u30AD</td><td>ｷ<br>&#92;uFF77</td>               </tr>
	 * <tr><td>ク<br>&#92;u30AF</td><td>ｸ<br>&#92;uFF78</td>               </tr>
	 * <tr><td>ケ<br>&#92;u30B1</td><td>ｹ<br>&#92;uFF79</td>               </tr>
	 * <tr><td>コ<br>&#92;u30B3</td><td>ｺ<br>&#92;uFF7A</td>               </tr>
	 * <tr><td>サ<br>&#92;u30B5</td><td>ｻ<br>&#92;uFF7B</td>               </tr>
	 * <tr><td>シ<br>&#92;u30B7</td><td>ｼ<br>&#92;uFF7C</td>               </tr>
	 * <tr><td>ス<br>&#92;u30B9</td><td>ｽ<br>&#92;uFF7D</td>               </tr>
	 * <tr><td>セ<br>&#92;u30BB</td><td>ｾ<br>&#92;uFF7E</td>               </tr>
	 * <tr><td>ソ<br>&#92;u30BD</td><td>ｿ<br>&#92;uFF7F</td>               </tr>
	 * <tr><td>タ<br>&#92;u30BF</td><td>ﾀ<br>&#92;uFF80</td>               </tr>
	 * <tr><td>チ<br>&#92;u30C1</td><td>ﾁ<br>&#92;uFF81</td>               </tr>
	 * <tr><td>ツ<br>&#92;u30C4</td><td>ﾂ<br>&#92;uFF82</td>               </tr>
	 * <tr><td>テ<br>&#92;u30C6</td><td>ﾃ<br>&#92;uFF83</td>               </tr>
	 * <tr><td>ト<br>&#92;u30C8</td><td>ﾄ<br>&#92;uFF84</td>               </tr>
	 * <tr><td>ナ<br>&#92;u30CA</td><td>ﾅ<br>&#92;uFF85</td>               </tr>
	 * <tr><td>ニ<br>&#92;u30CB</td><td>ﾆ<br>&#92;uFF86</td>               </tr>
	 * <tr><td>ヌ<br>&#92;u30CC</td><td>ﾇ<br>&#92;uFF87</td>               </tr>
	 * <tr><td>ネ<br>&#92;u30CD</td><td>ﾈ<br>&#92;uFF88</td>               </tr>
	 * <tr><td>ノ<br>&#92;u30CE</td><td>ﾉ<br>&#92;uFF89</td>               </tr>
	 * <tr><td>ハ<br>&#92;u30CF</td><td>ﾊ<br>&#92;uFF8A</td>               </tr>
	 * <tr><td>ヒ<br>&#92;u30D2</td><td>ﾋ<br>&#92;uFF8B</td>               </tr>
	 * <tr><td>フ<br>&#92;u30D5</td><td>ﾌ<br>&#92;uFF8C</td>               </tr>
	 * <tr><td>ヘ<br>&#92;u30D8</td><td>ﾍ<br>&#92;uFF8D</td>               </tr>
	 * <tr><td>ホ<br>&#92;u30DB</td><td>ﾎ<br>&#92;uFF8E</td>               </tr>
	 * <tr><td>マ<br>&#92;u30DE</td><td>ﾏ<br>&#92;uFF8F</td>               </tr>
	 * <tr><td>ミ<br>&#92;u30DF</td><td>ﾐ<br>&#92;uFF90</td>               </tr>
	 * <tr><td>ム<br>&#92;u30E0</td><td>ﾑ<br>&#92;uFF91</td>               </tr>
	 * <tr><td>メ<br>&#92;u30E1</td><td>ﾒ<br>&#92;uFF92</td>               </tr>
	 * <tr><td>モ<br>&#92;u30E2</td><td>ﾓ<br>&#92;uFF93</td>               </tr>
	 * <tr><td>ヤ<br>&#92;u30E4</td><td>ﾔ<br>&#92;uFF94</td>               </tr>
	 * <tr><td>ユ<br>&#92;u30E6</td><td>ﾕ<br>&#92;uFF95</td>               </tr>
	 * <tr><td>ヨ<br>&#92;u30E8</td><td>ﾖ<br>&#92;uFF96</td>               </tr>
	 * <tr><td>ラ<br>&#92;u30E9</td><td>ﾗ<br>&#92;uFF97</td>               </tr>
	 * <tr><td>リ<br>&#92;u30EA</td><td>ﾘ<br>&#92;uFF98</td>               </tr>
	 * <tr><td>ル<br>&#92;u30EB</td><td>ﾙ<br>&#92;uFF99</td>               </tr>
	 * <tr><td>レ<br>&#92;u30EC</td><td>ﾚ<br>&#92;uFF9A</td>               </tr>
	 * <tr><td>ロ<br>&#92;u30ED</td><td>ﾛ<br>&#92;uFF9B</td>               </tr>
	 * <tr><td>ワ<br>&#92;u30EF</td><td>ﾜ<br>&#92;uFF9C</td>               </tr>
	 * <tr><td>ン<br>&#92;u30F3</td><td>ﾝ<br>&#92;uFF9D</td>               </tr>
	 * <tr><td>゛<br>&#92;u309B</td><td>ﾞ<br>&#92;uFF9E</td>               </tr>
	 * <tr><td>゜<br>&#92;u309C</td><td>ﾟ<br>&#92;uFF9F</td>               </tr>
	 * <tr><td>ガ<br>&#92;u30AC</td><td>ｶﾞ<br>&#92;uFF76<br>&#92;uFF9E</td></tr>
	 * <tr><td>ギ<br>&#92;u30AE</td><td>ｷﾞ<br>&#92;uFF77<br>&#92;uFF9E</td></tr>
	 * <tr><td>グ<br>&#92;u30B0</td><td>ｸﾞ<br>&#92;uFF78<br>&#92;uFF9E</td></tr>
	 * <tr><td>ゲ<br>&#92;u30B2</td><td>ｹﾞ<br>&#92;uFF79<br>&#92;uFF9E</td></tr>
	 * <tr><td>ゴ<br>&#92;u30B4</td><td>ｺﾞ<br>&#92;uFF7A<br>&#92;uFF9E</td></tr>
	 * <tr><td>ザ<br>&#92;u30B6</td><td>ｻﾞ<br>&#92;uFF7B<br>&#92;uFF9E</td></tr>
	 * <tr><td>ジ<br>&#92;u30B8</td><td>ｼﾞ<br>&#92;uFF7C<br>&#92;uFF9E</td></tr>
	 * <tr><td>ズ<br>&#92;u30BA</td><td>ｽﾞ<br>&#92;uFF7D<br>&#92;uFF9E</td></tr>
	 * <tr><td>ゼ<br>&#92;u30BC</td><td>ｾﾞ<br>&#92;uFF7E<br>&#92;uFF9E</td></tr>
	 * <tr><td>ゾ<br>&#92;u30BE</td><td>ｿﾞ<br>&#92;uFF7F<br>&#92;uFF9E</td></tr>
	 * <tr><td>ダ<br>&#92;u30C0</td><td>ﾀﾞ<br>&#92;uFF80<br>&#92;uFF9E</td></tr>
	 * <tr><td>ヂ<br>&#92;u30C2</td><td>ﾁﾞ<br>&#92;uFF81<br>&#92;uFF9E</td></tr>
	 * <tr><td>ヅ<br>&#92;u30C5</td><td>ﾂﾞ<br>&#92;uFF82<br>&#92;uFF9E</td></tr>
	 * <tr><td>デ<br>&#92;u30C7</td><td>ﾃﾞ<br>&#92;uFF83<br>&#92;uFF9E</td></tr>
	 * <tr><td>ド<br>&#92;u30C9</td><td>ﾄﾞ<br>&#92;uFF84<br>&#92;uFF9E</td></tr>
	 * <tr><td>バ<br>&#92;u30D0</td><td>ﾊﾞ<br>&#92;uFF8A<br>&#92;uFF9E</td></tr>
	 * <tr><td>ビ<br>&#92;u30D3</td><td>ﾋﾞ<br>&#92;uFF8B<br>&#92;uFF9E</td></tr>
	 * <tr><td>ブ<br>&#92;u30D6</td><td>ﾌﾞ<br>&#92;uFF8C<br>&#92;uFF9E</td></tr>
	 * <tr><td>ベ<br>&#92;u30D9</td><td>ﾍﾞ<br>&#92;uFF8D<br>&#92;uFF9E</td></tr>
	 * <tr><td>ボ<br>&#92;u30DC</td><td>ﾎﾞ<br>&#92;uFF8E<br>&#92;uFF9E</td></tr>
	 * <tr><td>パ<br>&#92;u30D1</td><td>ﾊﾟ<br>&#92;uFF8A<br>&#92;uFF9F</td></tr>
	 * <tr><td>ピ<br>&#92;u30D4</td><td>ﾋﾟ<br>&#92;uFF8B<br>&#92;uFF9F</td></tr>
	 * <tr><td>プ<br>&#92;u30D7</td><td>ﾌﾟ<br>&#92;uFF8C<br>&#92;uFF9F</td></tr>
	 * <tr><td>ペ<br>&#92;u30DA</td><td>ﾍﾟ<br>&#92;uFF8D<br>&#92;uFF9F</td></tr>
	 * <tr><td>ポ<br>&#92;u30DD</td><td>ﾎﾟ<br>&#92;uFF8E<br>&#92;uFF9F</td></tr>
	 * <tr><td>ヴ<br>&#92;u30F4</td><td>ｳﾞ<br>&#92;uFF73<br>&#92;uFF9E</td></tr>
	 * <tr><td>?<br>&#92;u30F7</td><td>ﾜﾞ<br>&#92;uFF9C<br>&#92;uFF9E</td></tr>
	 * <tr><td>?<br>&#92;u30FA</td><td>ｦﾞ<br>&#92;uFF66<br>&#92;uFF9E</td></tr>
	 * <tr><td>￣<br>&#92;uFFE3</td><td>~<br>&#92;u007E</td>               </tr>
	 * <tr><td>‘<br>&#92;u2018</td><td>`<br>&#92;u0060</td>               </tr>
	 * <tr><td>’<br>&#92;u2019</td><td>'<br>&#92;u0027</td>               </tr>
	 * <tr><td>”<br>&#92;u201D</td><td>"<br>&#92;u0022</td>               </tr>
	 * <tr><td>￥<br>&#92;uFFE5</td><td>\<br>&#92;u005C</td>               </tr>
	 * <tr><td>ヵ<br>&#92;u30F5</td><td>ｶ<br>&#92;uFF76</td>               </tr>
	 * <tr><td>ヶ<br>&#92;u30F6</td><td>ｹ<br>&#92;uFF79</td>               </tr>
	 * </table>
	 * </td></tr>
	 * </table>
	 * </dl>
	 * @param str 変換対象の文字列
	 * @return String 変換後の文字列
	 * @exception IllegalArgumentException 引数がnullの場合<br>
	 */
	public static String convertHalf(String str) throws IllegalArgumentException
	{
		
		// 引数がnullの場合は例外をスローします。
		if(str == null)
		{
			throw (new IllegalArgumentException(ERROR_NULL_ARGUNMENT));
		}
		
		// 引数が空文字列の場合は空文字列を返します。
		if("".equals(str))
		{
			return str;
		}
		
		// 引数の文字列を文字に分解します。
		char[] chars = str.toCharArray();
		int length = chars.length;
		
		// 変換後の文字列を生成するための文字列バッファです。
		StringBuilder sb = new StringBuilder();
		
		// すでに変換されたことを示すフラグです。（true なら変換済み）
		boolean breakFlag = false;
		
		for (int i = 0; i < length; i++)
		{
			breakFlag = false;
			
			// 制御文字はそのままにします。
			if(Character.isISOControl(chars[i]))
			{
				sb.append(chars[i]);
				// 全角英数字を半角英数字に変換します。
			}
			else if('\uff01' <= chars[i] && chars[i] <= '\uff5e')
			{
				
				// 一律に 0xfee0 だけ前にシフトします。
				sb.append((char)(chars[i] - 0xfee0));
				// 全角空白を半角空白に変換します。
			}
			else if('\u3000' == chars[i])
			{
				sb.append('\u0020');
			}
			else
			{
				String value = String.valueOf(chars[i]);
				
				// 全角カタカナを半角カタカナに変換します。
				// 全角カタカナテーブルを検索します。
				for (int m = 0; m < ZENKAKU_KATAKANA.length; m++)
				{
					for (int n = 0; n < ZENKAKU_KATAKANA[m].length; n++)
					{
						if(value.equals(ZENKAKU_KATAKANA[m][n]))
						{
							
							// 見つかった場合は対応する半角カタカナを選びます。
							sb.append(HANKAKU_KATAKANA[m][n]);
							
							// すでに変換されたことを示すフラグを立てます。
							breakFlag = true;
							break;
						}
					}
				}
				
				// すでに変換されたことを示すフラグが立っているなら,次の文字にうつります。
				if(breakFlag)
				{
					continue;
				}
				
				// すで変換されたことを示すフラグがたっていない場合です。
				if(!breakFlag)
				{
					
					// 変換できない文字なのでそのままにします。
					sb.append(chars[i]);
				}
			}
		}
		
		// 変換後の文字列を返します。
		return sb.toString();
	}
	
	/**
	 * <dl>
	 * <dd>メソッド名：	全角変換処理
	 * <dd>メソッド説明：半角文字を全角文字に変換します。
	 * <dd>備考：<br>
	 *          <p>変換可能な半角文字の範囲と変換パターンは下記の表を参照してください。<br>
	 *          　半角英数字 → 全角英数字　表1<br>
	 *          　半角カタカナ → 全角カタカナ　表2<br>
	 *          <p>表にある文字以外は変換せずにそのままにします。
	 * <FONT FACE="ＭＳ ゴシック">
	 * <table border=0>
	 * <tr>
	 * <td valign=left>
	 * <table border="2">
	 * <tr><th colspan=2>表1 半角英数字→全角英数字<th></tr>
	 * <tr><td> <br>&#92;u0020</td><td>　<br>&#92;u3000</td></tr>
	 * <tr><td>!<br>&#92;u0021</td><td>！<br>&#92;uFF01</td></tr>
	 * <tr><td>"<br>&#92;u0022</td><td>W<br>&#92;uFF02</td></tr>
	 * <tr><td>#<br>&#92;u0023</td><td>＃<br>&#92;uFF03</td></tr>
	 * <tr><td>$<br>&#92;u0024</td><td>＄<br>&#92;uFF04</td></tr>
	 * <tr><td>%<br>&#92;u0025</td><td>％<br>&#92;uFF05</td></tr>
	 * <tr><td>&<br>&#92;u0026</td><td>＆<br>&#92;uFF06</td></tr>
	 * <tr><td>'<br>&#92;u0027</td><td>V<br>&#92;uFF07</td></tr>
	 * <tr><td>(<br>&#92;u0028</td><td>（<br>&#92;uFF08</td></tr>
	 * <tr><td>)<br>&#92;u0029</td><td>）<br>&#92;uFF09</td></tr>
	 * <tr><td>*<br>&#92;u002A</td><td>＊<br>&#92;uFF0A</td></tr>
	 * <tr><td>+<br>&#92;u002B</td><td>＋<br>&#92;uFF0B</td></tr>
	 * <tr><td>,<br>&#92;u002C</td><td>，<br>&#92;uFF0C</td></tr>
	 * <tr><td>-<br>&#92;u002D</td><td>−<br>&#92;uFF0D</td></tr>
	 * <tr><td>.<br>&#92;u002E</td><td>．<br>&#92;uFF0E</td></tr>
	 * <tr><td>/<br>&#92;u002F</td><td>／<br>&#92;uFF0F</td></tr>
	 * <tr><td>0<br>&#92;u0030</td><td>０<br>&#92;uFF10</td></tr>
	 * <tr><td>1<br>&#92;u0031</td><td>１<br>&#92;uFF11</td></tr>
	 * <tr><td>2<br>&#92;u0032</td><td>２<br>&#92;uFF12</td></tr>
	 * <tr><td>3<br>&#92;u0033</td><td>３<br>&#92;uFF13</td></tr>
	 * <tr><td>4<br>&#92;u0034</td><td>４<br>&#92;uFF14</td></tr>
	 * <tr><td>5<br>&#92;u0035</td><td>５<br>&#92;uFF15</td></tr>
	 * <tr><td>6<br>&#92;u0036</td><td>６<br>&#92;uFF16</td></tr>
	 * <tr><td>7<br>&#92;u0037</td><td>７<br>&#92;uFF17</td></tr>
	 * <tr><td>8<br>&#92;u0038</td><td>８<br>&#92;uFF18</td></tr>
	 * <tr><td>9<br>&#92;u0039</td><td>９<br>&#92;uFF19</td></tr>
	 * <tr><td>:<br>&#92;u003A</td><td>：<br>&#92;uFF1A</td></tr>
	 * <tr><td>;<br>&#92;u003B</td><td>；<br>&#92;uFF1B</td></tr>
	 * <tr><td><<br>&#92;u003C</td><td>＜<br>&#92;uFF1C</td></tr>
	 * <tr><td>=<br>&#92;u003D</td><td>＝<br>&#92;uFF1D</td></tr>
	 * <tr><td>><br>&#92;u003E</td><td>＞<br>&#92;uFF1E</td></tr>
	 * <tr><td>?<br>&#92;u003F</td><td>？<br>&#92;uFF1F</td></tr>
	 * <tr><td>@<br>&#92;u0040</td><td>＠<br>&#92;uFF20</td></tr>
	 * <tr><td>A<br>&#92;u0041</td><td>Ａ<br>&#92;uFF21</td></tr>
	 * <tr><td>B<br>&#92;u0042</td><td>Ｂ<br>&#92;uFF22</td></tr>
	 * <tr><td>C<br>&#92;u0043</td><td>Ｃ<br>&#92;uFF23</td></tr>
	 * <tr><td>D<br>&#92;u0044</td><td>Ｄ<br>&#92;uFF24</td></tr>
	 * <tr><td>E<br>&#92;u0045</td><td>Ｅ<br>&#92;uFF25</td></tr>
	 * <tr><td>F<br>&#92;u0046</td><td>Ｆ<br>&#92;uFF26</td></tr>
	 * <tr><td>G<br>&#92;u0047</td><td>Ｇ<br>&#92;uFF27</td></tr>
	 * <tr><td>H<br>&#92;u0048</td><td>Ｈ<br>&#92;uFF28</td></tr>
	 * <tr><td>I<br>&#92;u0049</td><td>Ｉ<br>&#92;uFF29</td></tr>
	 * <tr><td>J<br>&#92;u004A</td><td>Ｊ<br>&#92;uFF2A</td></tr>
	 * <tr><td>K<br>&#92;u004B</td><td>Ｋ<br>&#92;uFF2B</td></tr>
	 * <tr><td>L<br>&#92;u004C</td><td>Ｌ<br>&#92;uFF2C</td></tr>
	 * <tr><td>M<br>&#92;u004D</td><td>Ｍ<br>&#92;uFF2D</td></tr>
	 * <tr><td>N<br>&#92;u004E</td><td>Ｎ<br>&#92;uFF2E</td></tr>
	 * <tr><td>O<br>&#92;u004F</td><td>Ｏ<br>&#92;uFF2F</td></tr>
	 * <tr><td>P<br>&#92;u0050</td><td>Ｐ<br>&#92;uFF30</td></tr>
	 * <tr><td>Q<br>&#92;u0051</td><td>Ｑ<br>&#92;uFF31</td></tr>
	 * <tr><td>R<br>&#92;u0052</td><td>Ｒ<br>&#92;uFF32</td></tr>
	 * <tr><td>S<br>&#92;u0053</td><td>Ｓ<br>&#92;uFF33</td></tr>
	 * <tr><td>T<br>&#92;u0054</td><td>Ｔ<br>&#92;uFF34</td></tr>
	 * <tr><td>U<br>&#92;u0055</td><td>Ｕ<br>&#92;uFF35</td></tr>
	 * <tr><td>V<br>&#92;u0056</td><td>Ｖ<br>&#92;uFF36</td></tr>
	 * <tr><td>W<br>&#92;u0057</td><td>Ｗ<br>&#92;uFF37</td></tr>
	 * <tr><td>X<br>&#92;u0058</td><td>Ｘ<br>&#92;uFF38</td></tr>
	 * <tr><td>Y<br>&#92;u0059</td><td>Ｙ<br>&#92;uFF39</td></tr>
	 * <tr><td>Z<br>&#92;u005A</td><td>Ｚ<br>&#92;uFF3A</td></tr>
	 * <tr><td>[<br>&#92;u005B</td><td>［<br>&#92;uFF3B</td></tr>
	 * <tr><td>\<br>&#92;u005C</td><td>＼<br>&#92;uFF3C</td></tr>
	 * <tr><td>]<br>&#92;u005D</td><td>］<br>&#92;uFF3D</td></tr>
	 * <tr><td>^<br>&#92;u005E</td><td>＾<br>&#92;uFF3E</td></tr>
	 * <tr><td>_<br>&#92;u005F</td><td>＿<br>&#92;uFF3F</td></tr>
	 * <tr><td>`<br>&#92;u0060</td><td>｀<br>&#92;uFF40</td></tr>
	 * <tr><td>a<br>&#92;u0061</td><td>ａ<br>&#92;uFF41</td></tr>
	 * <tr><td>b<br>&#92;u0062</td><td>ｂ<br>&#92;uFF42</td></tr>
	 * <tr><td>c<br>&#92;u0063</td><td>ｃ<br>&#92;uFF43</td></tr>
	 * <tr><td>d<br>&#92;u0064</td><td>ｄ<br>&#92;uFF44</td></tr>
	 * <tr><td>e<br>&#92;u0065</td><td>ｅ<br>&#92;uFF45</td></tr>
	 * <tr><td>f<br>&#92;u0066</td><td>ｆ<br>&#92;uFF46</td></tr>
	 * <tr><td>g<br>&#92;u0067</td><td>ｇ<br>&#92;uFF47</td></tr>
	 * <tr><td>h<br>&#92;u0068</td><td>ｈ<br>&#92;uFF48</td></tr>
	 * <tr><td>i<br>&#92;u0069</td><td>ｉ<br>&#92;uFF49</td></tr>
	 * <tr><td>j<br>&#92;u006A</td><td>ｊ<br>&#92;uFF4A</td></tr>
	 * <tr><td>k<br>&#92;u006B</td><td>ｋ<br>&#92;uFF4B</td></tr>
	 * <tr><td>l<br>&#92;u006C</td><td>ｌ<br>&#92;uFF4C</td></tr>
	 * <tr><td>m<br>&#92;u006D</td><td>ｍ<br>&#92;uFF4D</td></tr>
	 * <tr><td>n<br>&#92;u006E</td><td>ｎ<br>&#92;uFF4E</td></tr>
	 * <tr><td>o<br>&#92;u006F</td><td>ｏ<br>&#92;uFF4F</td></tr>
	 * <tr><td>p<br>&#92;u0070</td><td>ｐ<br>&#92;uFF50</td></tr>
	 * <tr><td>q<br>&#92;u0071</td><td>ｑ<br>&#92;uFF51</td></tr>
	 * <tr><td>r<br>&#92;u0072</td><td>ｒ<br>&#92;uFF52</td></tr>
	 * <tr><td>s<br>&#92;u0073</td><td>ｓ<br>&#92;uFF53</td></tr>
	 * <tr><td>t<br>&#92;u0074</td><td>ｔ<br>&#92;uFF54</td></tr>
	 * <tr><td>u<br>&#92;u0075</td><td>ｕ<br>&#92;uFF55</td></tr>
	 * <tr><td>v<br>&#92;u0076</td><td>ｖ<br>&#92;uFF56</td></tr>
	 * <tr><td>w<br>&#92;u0077</td><td>ｗ<br>&#92;uFF57</td></tr>
	 * <tr><td>x<br>&#92;u0078</td><td>ｘ<br>&#92;uFF58</td></tr>
	 * <tr><td>y<br>&#92;u0079</td><td>ｙ<br>&#92;uFF59</td></tr>
	 * <tr><td>z<br>&#92;u007A</td><td>ｚ<br>&#92;uFF5A</td></tr>
	 * <tr><td>{<br>&#92;u007B</td><td>｛<br>&#92;uFF5B</td></tr>
	 * <tr><td>|<br>&#92;u007C</td><td>｜<br>&#92;uFF5C</td></tr>
	 * <tr><td>}<br>&#92;u007D</td><td>｝<br>&#92;uFF5D</td></tr>
	 * <tr><td>~<br>&#92;u007E</td><td>〜<br>&#92;uFF5E</td></tr>
	 * </table>
	 * </td>
	 * <td valign=left>
	 * <table border="2">
	 * <tr><th colspan=2>表2 半角カタカナ→全角カタカナ<th></tr>
	 * <tr><td>｡<br>&#92;uFF61</td><td>。<br>&#92;u3002</td>               </tr>
	 * <tr><td>｢<br>&#92;uFF62</td><td>「<br>&#92;u300C</td>               </tr>
	 * <tr><td>｣<br>&#92;uFF63</td><td>」<br>&#92;u300D</td>               </tr>
	 * <tr><td>､<br>&#92;uFF64</td><td>、<br>&#92;u3001</td>               </tr>
	 * <tr><td>･<br>&#92;uFF65</td><td>・<br>&#92;u30FB</td>               </tr>
	 * <tr><td>ｦ<br>&#92;uFF66</td><td>ヲ<br>&#92;u30F2</td>               </tr>
	 * <tr><td>ｧ<br>&#92;uFF67</td><td>ァ<br>&#92;u30A1</td>               </tr>
	 * <tr><td>ｨ<br>&#92;uFF68</td><td>ィ<br>&#92;u30A3</td>               </tr>
	 * <tr><td>ｩ<br>&#92;uFF69</td><td>ゥ<br>&#92;u30A5</td>               </tr>
	 * <tr><td>ｪ<br>&#92;uFF6A</td><td>ェ<br>&#92;u30A7</td>               </tr>
	 * <tr><td>ｫ<br>&#92;uFF6B</td><td>ォ<br>&#92;u30A9</td>               </tr>
	 * <tr><td>ｬ<br>&#92;uFF6C</td><td>ャ<br>&#92;u30E3</td>               </tr>
	 * <tr><td>ｭ<br>&#92;uFF6D</td><td>ュ<br>&#92;u30E5</td>               </tr>
	 * <tr><td>ｮ<br>&#92;uFF6E</td><td>ョ<br>&#92;u30E7</td>               </tr>
	 * <tr><td>ｯ<br>&#92;uFF6F</td><td>ッ<br>&#92;u30C3</td>               </tr>
	 * <tr><td>ｰ<br>&#92;uFF70</td><td>ー<br>&#92;u30FC</td>               </tr>
	 * <tr><td>ｱ<br>&#92;uFF71</td><td>ア<br>&#92;u30A2</td>               </tr>
	 * <tr><td>ｲ<br>&#92;uFF72</td><td>イ<br>&#92;u30A2</td>               </tr>
	 * <tr><td>ｳ<br>&#92;uFF73</td><td>ウ<br>&#92;u30A6</td>               </tr>
	 * <tr><td>ｴ<br>&#92;uFF74</td><td>エ<br>&#92;u30A8</td>               </tr>
	 * <tr><td>ｵ<br>&#92;uFF75</td><td>オ<br>&#92;u30AA</td>               </tr>
	 * <tr><td>ｶ<br>&#92;uFF76</td><td>カ<br>&#92;u30AB</td>               </tr>
	 * <tr><td>ｷ<br>&#92;uFF77</td><td>キ<br>&#92;u30AD</td>               </tr>
	 * <tr><td>ｸ<br>&#92;uFF78</td><td>ク<br>&#92;u30AF</td>               </tr>
	 * <tr><td>ｹ<br>&#92;uFF79</td><td>ケ<br>&#92;u30B1</td>               </tr>
	 * <tr><td>ｺ<br>&#92;uFF7A</td><td>コ<br>&#92;u30B3</td>               </tr>
	 * <tr><td>ｻ<br>&#92;uFF7B</td><td>サ<br>&#92;u30B5</td>               </tr>
	 * <tr><td>ｼ<br>&#92;uFF7C</td><td>シ<br>&#92;u30B7</td>               </tr>
	 * <tr><td>ｽ<br>&#92;uFF7D</td><td>ス<br>&#92;u30B9</td>               </tr>
	 * <tr><td>ｾ<br>&#92;uFF7E</td><td>セ<br>&#92;u30BB</td>               </tr>
	 * <tr><td>ｿ<br>&#92;uFF7F</td><td>ソ<br>&#92;u30BD</td>               </tr>
	 * <tr><td>ﾀ<br>&#92;uFF80</td><td>タ<br>&#92;u30BF</td>               </tr>
	 * <tr><td>ﾁ<br>&#92;uFF81</td><td>チ<br>&#92;u30C1</td>               </tr>
	 * <tr><td>ﾂ<br>&#92;uFF82</td><td>ツ<br>&#92;u30C4</td>               </tr>
	 * <tr><td>ﾃ<br>&#92;uFF83</td><td>テ<br>&#92;u30C6</td>               </tr>
	 * <tr><td>ﾄ<br>&#92;uFF84</td><td>ト<br>&#92;u30C8</td>               </tr>
	 * <tr><td>ﾅ<br>&#92;uFF85</td><td>ナ<br>&#92;u30CA</td>               </tr>
	 * <tr><td>ﾆ<br>&#92;uFF86</td><td>ニ<br>&#92;u30CB</td>               </tr>
	 * <tr><td>ﾇ<br>&#92;uFF87</td><td>ヌ<br>&#92;u30CC</td>               </tr>
	 * <tr><td>ﾈ<br>&#92;uFF88</td><td>ネ<br>&#92;u30CD</td>               </tr>
	 * <tr><td>ﾉ<br>&#92;uFF89</td><td>ノ<br>&#92;u30CE</td>               </tr>
	 * <tr><td>ﾊ<br>&#92;uFF8A</td><td>ハ<br>&#92;u30CF</td>               </tr>
	 * <tr><td>ﾋ<br>&#92;uFF8B</td><td>ヒ<br>&#92;u30D2</td>               </tr>
	 * <tr><td>ﾌ<br>&#92;uFF8C</td><td>フ<br>&#92;u30D5</td>               </tr>
	 * <tr><td>ﾍ<br>&#92;uFF8D</td><td>ヘ<br>&#92;u30D8</td>               </tr>
	 * <tr><td>ﾎ<br>&#92;uFF8E</td><td>ホ<br>&#92;u30DB</td>               </tr>
	 * <tr><td>ﾏ<br>&#92;uFF8F</td><td>マ<br>&#92;u30DE</td>               </tr>
	 * <tr><td>ﾐ<br>&#92;uFF90</td><td>ミ<br>&#92;u30DF</td>               </tr>
	 * <tr><td>ﾑ<br>&#92;uFF91</td><td>ム<br>&#92;u30E0</td>               </tr>
	 * <tr><td>ﾒ<br>&#92;uFF92</td><td>メ<br>&#92;u30E1</td>               </tr>
	 * <tr><td>ﾓ<br>&#92;uFF93</td><td>モ<br>&#92;u30E2</td>               </tr>
	 * <tr><td>ﾔ<br>&#92;uFF94</td><td>ヤ<br>&#92;u30E4</td>               </tr>
	 * <tr><td>ﾕ<br>&#92;uFF95</td><td>ユ<br>&#92;u30E6</td>               </tr>
	 * <tr><td>ﾖ<br>&#92;uFF96</td><td>ヨ<br>&#92;u30E8</td>               </tr>
	 * <tr><td>ﾗ<br>&#92;uFF97</td><td>ラ<br>&#92;u30E9</td>               </tr>
	 * <tr><td>ﾘ<br>&#92;uFF98</td><td>リ<br>&#92;u30EA</td>               </tr>
	 * <tr><td>ﾙ<br>&#92;uFF99</td><td>ル<br>&#92;u30EB</td>               </tr>
	 * <tr><td>ﾚ<br>&#92;uFF9A</td><td>レ<br>&#92;u30EC</td>               </tr>
	 * <tr><td>ﾛ<br>&#92;uFF9B</td><td>ロ<br>&#92;u30ED</td>               </tr>
	 * <tr><td>ﾜ<br>&#92;uFF9C</td><td>ワ<br>&#92;u30EF</td>               </tr>
	 * <tr><td>ﾝ<br>&#92;uFF9D</td><td>ン<br>&#92;u30F3</td>               </tr>
	 * <tr><td>ﾞ<br>&#92;uFF9E</td><td>゛<br>&#92;u309B</td>               </tr>
	 * <tr><td>ﾟ<br>&#92;uFF9F</td><td>゜<br>&#92;u309C</td>               </tr>
	 * <tr><td>ｶﾞ<br>&#92;uFF76<br>&#92;uFF9E</td><td>ガ<br>&#92;u30AC</td></tr>
	 * <tr><td>ｷﾞ<br>&#92;uFF77<br>&#92;uFF9E</td><td>ギ<br>&#92;u30AE</td></tr>
	 * <tr><td>ｸﾞ<br>&#92;uFF78<br>&#92;uFF9E</td><td>グ<br>&#92;u30B0</td></tr>
	 * <tr><td>ｹﾞ<br>&#92;uFF79<br>&#92;uFF9E</td><td>ゲ<br>&#92;u30B2</td></tr>
	 * <tr><td>ｺﾞ<br>&#92;uFF7A<br>&#92;uFF9E</td><td>ゴ<br>&#92;u30B4</td></tr>
	 * <tr><td>ｻﾞ<br>&#92;uFF7B<br>&#92;uFF9E</td><td>ザ<br>&#92;u30B6</td></tr>
	 * <tr><td>ｼﾞ<br>&#92;uFF7C<br>&#92;uFF9E</td><td>ジ<br>&#92;u30B8</td></tr>
	 * <tr><td>ｽﾞ<br>&#92;uFF7D<br>&#92;uFF9E</td><td>ズ<br>&#92;u30BA</td></tr>
	 * <tr><td>ｾﾞ<br>&#92;uFF7E<br>&#92;uFF9E</td><td>ゼ<br>&#92;u30BC</td></tr>
	 * <tr><td>ｿﾞ<br>&#92;uFF7F<br>&#92;uFF9E</td><td>ゾ<br>&#92;u30BE</td></tr>
	 * <tr><td>ﾀﾞ<br>&#92;uFF80<br>&#92;uFF9E</td><td>ダ<br>&#92;u30C0</td></tr>
	 * <tr><td>ﾁﾞ<br>&#92;uFF81<br>&#92;uFF9E</td><td>ヂ<br>&#92;u30C2</td></tr>
	 * <tr><td>ﾂﾞ<br>&#92;uFF82<br>&#92;uFF9E</td><td>ヅ<br>&#92;u30C5</td></tr>
	 * <tr><td>ﾃﾞ<br>&#92;uFF83<br>&#92;uFF9E</td><td>デ<br>&#92;u30C7</td></tr>
	 * <tr><td>ﾄﾞ<br>&#92;uFF84<br>&#92;uFF9E</td><td>ド<br>&#92;u30C9</td></tr>
	 * <tr><td>ﾊﾞ<br>&#92;uFF8A<br>&#92;uFF9E</td><td>バ<br>&#92;u30D0</td></tr>
	 * <tr><td>ﾋﾞ<br>&#92;uFF8B<br>&#92;uFF9E</td><td>ビ<br>&#92;u30D3</td></tr>
	 * <tr><td>ﾌﾞ<br>&#92;uFF8C<br>&#92;uFF9E</td><td>ブ<br>&#92;u30D6</td></tr>
	 * <tr><td>ﾍﾞ<br>&#92;uFF8D<br>&#92;uFF9E</td><td>ベ<br>&#92;u30D9</td></tr>
	 * <tr><td>ﾎﾞ<br>&#92;uFF8E<br>&#92;uFF9E</td><td>ボ<br>&#92;u30DC</td></tr>
	 * <tr><td>ﾊﾟ<br>&#92;uFF8A<br>&#92;uFF9F</td><td>パ<br>&#92;u30D1</td></tr>
	 * <tr><td>ﾋﾟ<br>&#92;uFF8B<br>&#92;uFF9F</td><td>ピ<br>&#92;u30D4</td></tr>
	 * <tr><td>ﾌﾟ<br>&#92;uFF8C<br>&#92;uFF9F</td><td>プ<br>&#92;u30D7</td></tr>
	 * <tr><td>ﾍﾟ<br>&#92;uFF8D<br>&#92;uFF9F</td><td>ペ<br>&#92;u30DA</td></tr>
	 * <tr><td>ﾎﾟ<br>&#92;uFF8E<br>&#92;uFF9F</td><td>ポ<br>&#92;u30DD</td></tr>
	 * <tr><td>ｳﾞ<br>&#92;uFF73<br>&#92;uFF9E</td><td>ヴ<br>&#92;u30F4</td></tr>
	 * <tr><td>ﾜﾞ<br>&#92;uFF9C<br>&#92;uFF9E</td><td>?<br>&#92;u30F7</td></tr>
	 * <tr><td>ｦﾞ<br>&#92;uFF66<br>&#92;uFF9E</td><td>?<br>&#92;u30FA</td></tr>
	 * <tr><td>~<br>&#92;u007E</td><td>￣<br>&#92;uFFE3</td>               </tr>
	 * <tr><td>`<br>&#92;u0060</td><td>‘<br>&#92;u2018</td>               </tr>
	 * <tr><td>'<br>&#92;u0027</td><td>’<br>&#92;u2019</td>               </tr>
	 * <tr><td>"<br>&#92;u0022</td><td>”<br>&#92;u201D</td>               </tr>
	 * <tr><td>\<br>&#92;u005C</td><td>￥<br>&#92;uFFE5</td>               </tr>
	 * <tr><td>ｶ<br>&#92;uFF76</td><td>ヵ<br>&#92;u30F5</td>               </tr>
	 * <tr><td>ｹ<br>&#92;uFF79</td><td>ヶ<br>&#92;u30F6</td>               </tr>
	 * </table>
	 * </td></tr>
	 * </table>
	 * </dl>
	 * @param str 変換対象の文字列
	 * @return String 変換後の文字列
	 * @exception IllegalArgumentException 引数がnullの場合<br>
	 */
	public static String convertFull(String str) throws IllegalArgumentException
	{
		
		// 引数がnullの場合は例外をスローします。
		if(str == null)
		{
			throw (new IllegalArgumentException(ERROR_NULL_ARGUNMENT));
		}
		
		// 引数が空文字列の場合は空文字列を返します。
		if("".equals(str))
		{
			return str;
		}
		
		// 引数の文字列を文字に分解します。
		char[] chars = str.toCharArray();
		int length = chars.length;
		
		// 変換後の文字列を生成するための文字列バッファです。
		StringBuilder sb = new StringBuilder();
		
		// すでに変換されたことを示すフラグです。（true なら変換済み）
		boolean breakFlag = false;
		
		for (int i = 0; i < length; i++)
		{
			breakFlag = false;
			
			// 制御文字はそのままにします。
			if(Character.isISOControl(chars[i]))
			{
				sb.append(chars[i]);
				// 半角英数字を全角英数字に変換します。
			}
			else if('\u0021' <= chars[i] && chars[i] <= '\u007E')
			{
				
				// 一律に 0xfee0 だけ後にシフトします。
				sb.append((char)(chars[i] + 0xfee0));
				// 半角空白を全角空白に変換します。
			}
			else if('\u0020' == chars[i])
			{
				sb.append('\u3000');
			}
			else
			{
				String value = String.valueOf(chars[i]);
				
				// 半角カタカナを全角カタカナに変換します。
				// 半角カタカナテーブルを検索します。
				for (int m = 0; m < HANKAKU_KATAKANA_FULL.length; m++)
				{
					for (int n = 0; n < HANKAKU_KATAKANA_FULL[m].length; n++)
					{
						if(("ﾞ".equals(value) || "ﾟ".equals(value)) && i > 0)
						{
							// 濁点、半濁点の場合、一文字前と連結し、検索する
							String value2 = String.valueOf(chars[i-1]) + value;
							if(value2.equals(HANKAKU_KATAKANA_FULL[m][n]))
							{
								// 濁点、半濁点の場合、一文字前を削除する
								sb.delete(sb.length()-1, sb.length());
								
								// 見つかった場合は対応する全角カタカナを選びます。
								sb.append(ZENKAKU_KATAKANA_FULL[m][n]);
								
								// すでに変換されたことを示すフラグを立てます。
								breakFlag = true;
								break;
							}
						}
						else
						{
							if(value.equals(HANKAKU_KATAKANA_FULL[m][n]))
							{
								
								// 見つかった場合は対応する全角カタカナを選びます。
								sb.append(ZENKAKU_KATAKANA_FULL[m][n]);
								
								// すでに変換されたことを示すフラグを立てます。
								breakFlag = true;
								break;
							}
						}
					}
				}
				
				// すでに変換されたことを示すフラグが立っているなら,次の文字にうつります。
				if(breakFlag)
				{
					continue;
				}
				
				// すで変換されたことを示すフラグがたっていない場合です。
				if(!breakFlag)
				{
					
					// 変換できない文字なのでそのままにします。
					sb.append(chars[i]);
				}
			}
		}
		
		// 変換後の文字列を返します。
		return sb.toString();
	}

	// ANK-3183-00-00 ADD START
	/**
	 * <dl>
	 * <dd>メソッド名：	全角変換処理
	 * <dd>メソッド説明：半角文字を全角文字に変換します。(一部記号の変換結果がconvertFull(String)とは異なります)
	 * <dd>備考：<br>
	 *          <p>convertFull(String)と同等の変換を行いますが、下記表の変換結果が異なります。<br>
	 *          ※convertFull(String)は、下記表の文字をシフト変換するため機種依存文字に変換する場合がある。<br>
	 *          　このメソッドでは変換テーブルによる変換を先に行った後、convertFull(String)によって残りの文字を変換する。
	 * <FONT FACE="ＭＳ ゴシック">
	 * <table border=0>
	 * <tr>
	 * <td valign=left>
	 * <table border="2">
	 * <tr><th colspan=2>表1 半角英数字→全角英数字<th></tr>
	 * <tr><td>~<br>&#92;u007E</td><td>￣<br>&#92;uFFE3</td>               </tr>
	 * <tr><td>`<br>&#92;u0060</td><td>‘<br>&#92;u2018</td>               </tr>
	 * <tr><td>'<br>&#92;u0027</td><td>’<br>&#92;u2019</td>               </tr>
	 * <tr><td>"<br>&#92;u0022</td><td>”<br>&#92;u201D</td>               </tr>
	 * <tr><td>\<br>&#92;u005C</td><td>￥<br>&#92;uFFE5</td>               </tr>
	 * </table>
	 * </td></tr>
	 * </table>
	 * </dl>
	 * @param str 変換対象の文字列
	 * @return 変換後の文字列
	 * @throws IllegalArgumentException 引数がnullの場合
	 */
	public static String convertFullMark(String str) throws IllegalArgumentException
	{
		// 引数がnullの場合は例外をスローします。
		if(str == null)
		{
			throw (new IllegalArgumentException(ERROR_NULL_ARGUNMENT));
		}
		
		// 引数が空文字列の場合は空文字列を返します。
		if("".equals(str))
		{
			return str;
		}
		
		// 引数の文字列を文字に分解します。
		char[] chars = str.toCharArray();
		int length = chars.length;
		
		// 変換後の文字列を生成するための文字列バッファです。
		StringBuilder sb = new StringBuilder();
		
		// すでに変換されたことを示すフラグです。（true なら変換済み）
		boolean breakFlag = false;
		
		for (int i = 0; i < length; i++)
		{
			breakFlag = false;
			
			String value = String.valueOf(chars[i]);
			
			// 半角カタカナを全角カタカナに変換します。
			// 半角カタカナテーブルを検索します。
			for (int m = 0; m < HANKAKU_KATAKANA_FULL.length; m++)
			{
				for (int n = 0; n < HANKAKU_KATAKANA_FULL[m].length; n++)
				{
					if(("ﾞ".equals(value) || "ﾟ".equals(value)) && i > 0)
					{
						// 濁点、半濁点の場合、一文字前と連結し、検索する
						String value2 = String.valueOf(chars[i-1]) + value;
						if(value2.equals(HANKAKU_KATAKANA_FULL[m][n]))
						{
							// 濁点、半濁点の場合、一文字前を削除する
							sb.delete(sb.length()-1, sb.length());
							
							// 見つかった場合は対応する全角カタカナを選びます。
							sb.append(ZENKAKU_KATAKANA_FULL[m][n]);
							
							// すでに変換されたことを示すフラグを立てます。
							breakFlag = true;
							break;
						}
					}
					else
					{
						if(value.equals(HANKAKU_KATAKANA_FULL[m][n]))
						{
							
							// 見つかった場合は対応する全角カタカナを選びます。
							sb.append(ZENKAKU_KATAKANA_FULL[m][n]);
							
							// すでに変換されたことを示すフラグを立てます。
							breakFlag = true;
							break;
						}
					}
				}
			}
			
			// すでに変換されたことを示すフラグが立っているなら,次の文字にうつります。
			if(breakFlag)
			{
				continue;
			}
			
			// すで変換されたことを示すフラグがたっていない場合です。
			if(!breakFlag)
			{
				
				// 変換できない文字なのでそのままにします。
				sb.append(chars[i]);
			}
		}

		return convertFull(sb.toString());
	}
	// ANK-3183-00-00 ADD END
}
