OSDN Git Service

change typo in closing tag
authorandy <andy@1ca29b6e-896d-4ea0-84a5-967f57386b96>
Sat, 3 Feb 2007 19:30:17 +0000 (19:30 +0000)
committerandy <andy@1ca29b6e-896d-4ea0-84a5-967f57386b96>
Sat, 3 Feb 2007 19:30:17 +0000 (19:30 +0000)
git-svn-id: https://svn.sourceforge.jp/svnroot/nucleus-jp/nucleus-jp/trunk/utf8@184 1ca29b6e-896d-4ea0-84a5-967f57386b96

nucleus/libs/mb_emulator/convert.table
nucleus/libs/mb_emulator/history.html
nucleus/libs/mb_emulator/lower.table [new file with mode: 0644]
nucleus/libs/mb_emulator/mb-emulator.ini
nucleus/libs/mb_emulator/mb-emulator.php
nucleus/libs/mb_emulator/sjistouni.table
nucleus/libs/mb_emulator/unitosjis.table
nucleus/libs/mb_emulator/upper.table [new file with mode: 0644]

index 3ebc53b..b1e0e17 100755 (executable)
@@ -1,5 +1,5 @@
 <?php
-$_sjistoeuc_byte1 = array(
+$mbemu_internals['sjistoeuc_byte1'] = array(
 129 => 161 ,130 => 163 ,131 => 165 ,132 => 167 ,133 => 169 ,134 => 171 ,
 135 => 173 ,136 => 175 ,137 => 177 ,138 => 179 ,139 => 181 ,140 => 183 ,
 141 => 185 ,142 => 187 ,143 => 189 ,144 => 191 ,145 => 193 ,146 => 195 ,
@@ -9,7 +9,7 @@ $_sjistoeuc_byte1 = array(
 229 => 233 ,230 => 235 ,231 => 237 ,232 => 239 ,233 => 241 ,234 => 243 ,
 235 => 245 ,236 => 247 ,237 => 249 ,238 => 251 ,239 => 253 ,240 => 255 );
 
-$_sjistoeuc_byte2 = array(
+$mbemu_internals['sjistoeuc_byte2'] = array(
 0 => array(
 64 => 161 ,65 => 162 ,66 => 163 ,67 => 164 ,68 => 165 ,69 => 166 ,
 70 => 167 ,71 => 168 ,72 => 169 ,73 => 170 ,74 => 171 ,75 => 172 ,
@@ -46,7 +46,7 @@ $_sjistoeuc_byte2 = array(
 245 => 247 ,246 => 248 ,247 => 249 ,248 => 250 ,249 => 251 ,250 => 252 ,
 251 => 253 ,252 => 254 ));
 
-$_sjistoeuc_byte1_shift = array (
+$mbemu_internals['sjistoeuc_byte1_shift'] = array (
 64 => 0 ,65 => 0 ,66 => 0 ,67 => 0 ,68 => 0 ,69 => 0 ,
 70 => 0 ,71 => 0 ,72 => 0 ,73 => 0 ,74 => 0 ,75 => 0 ,
 76 => 0 ,77 => 0 ,78 => 0 ,79 => 0 ,80 => 0 ,81 => 0 ,
@@ -80,7 +80,7 @@ $_sjistoeuc_byte1_shift = array (
 245 => 1 ,246 => 1 ,247 => 1 ,248 => 1 ,249 => 1 ,250 => 1 ,
 251 => 1 ,252 => 1 );
 
-$_euctosjis_byte1 = array(
+$mbemu_internals['euctosjis_byte1'] = array(
 161 => 129, 162 => 129, 163 => 130, 164 => 130, 165 => 131, 
 166 => 131, 167 => 132, 168 => 132, 169 => 133, 170 => 133, 
 171 => 134, 172 => 134, 173 => 135, 174 => 135, 175 => 136, 
@@ -101,7 +101,7 @@ $_euctosjis_byte1 = array(
 246 => 235, 247 => 236, 248 => 236, 249 => 237, 250 => 237, 
 251 => 238, 252 => 238, 253 => 239, 254 => 239, 255 => 240);
 
-$_euctosjis_byte2 = array(
+$mbemu_internals['euctosjis_byte2'] = array(
 0 => array(
 161 => 64, 162 => 65, 163 => 66, 164 => 67, 165 => 68, 
 166 => 69, 167 => 70, 168 => 71, 169 => 72, 170 => 73, 
@@ -143,7 +143,7 @@ $_euctosjis_byte2 = array(
 246 => 244, 247 => 245, 248 => 246, 249 => 247, 250 => 248, 
 251 => 249, 252 => 250, 253 => 251, 254 => 252));
 
-$alphanumeric_convert = array (
+$mbemu_internals['alphanumeric_convert'] = array (
 0x20 => "\xa1\xa1",0x21 => "\xa1\xaa",0x23 => "\xa1\xf4",0x24 => 
 "\xa1\xf0",0x25 => "\xa1\xf3",
 0x26 => "\xa1\xf5",0x28 => "\xa1\xca",0x29 => "\xa1\xcb",0x2a => "\xa1\xf6",
@@ -169,7 +169,7 @@ $alphanumeric_convert = array (
 0x79 => "\xa3\xf9",0x7a => "\xa3\xfa",0x7b => "\xa1\xd0",0x7c => "\xa1\xc3",
 0x7d => "\xa1\xd1");
 
-$kana_zenhan_convert = array (
+$mbemu_internals['kana_zenhan_convert'] = array (
 0xa1 => "\xa7",0xa2 => "\xb1",0xa3 => "\xa8",0xa4 => "\xb2",
 0xa5 => "\xa9",0xa6 => "\xb3",0xa7 => "\xaa",0xa8 => "\xb4",
 0xa9 => "\xab",0xaa => "\xb5",0xab => "\xb6",0xac => "\xb6\x8e\xde",
@@ -195,7 +195,7 @@ $kana_zenhan_convert = array (
 0xee => "\xdc",0xf0 => "\xb2",0xf1 => "\xb4",0xf2 => "\xa6",0xf3 => "\xdd",
 0xf4 => "\xb3\x8e\xde");
 
-$special_zenhan_convert = array(
+$mbemu_internals['special_zenhan_convert'] = array(
 0xa2 => "\xa4",0xa3 => "\xa1",0xa6 => "\xa5",0xab => "\xde",
 0xac => "\xdf",0xbc => "\xb0",0xd6 => "\xa2",0xd7 => "\xa3");
 
index 5043787..eb0c7f8 100755 (executable)
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-       <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=shift_jis">
-       <TITLE>\95Ï\8dX\97\9a\97ð</TITLE>
-       <META NAME="GENERATOR" CONTENT="OpenOffice.org 1.1.3  (Win32)">
-       <META NAME="CREATED" CONTENT="20050130;2310982">
-       <META NAME="CHANGED" CONTENT="20050130;2372139">
-</HEAD>
-<BODY LANG="ja-JP" DIR="LTR">
-<H2>\95Ï\8dX\97\9a\97ð</H2>
-<H3><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">Ver.0.37</SPAN></FONT>\81i<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">2005/1/30</SPAN></FONT>\81j</H3>
-<UL>
-       <LI><P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">JIS</SPAN></FONT>\82Ì\83}\83b\83`\83\93\83O\82Ì\83o\83O\82ð\8dÄ\82Ñ\8fC\90³\82µ\82Ü\82µ\82½\81B
-               </P>
-</UL>
-<H3><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">Ver.0.36</SPAN></FONT>\81i<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">2004/11/13</SPAN></FONT>\81j</H3>
-<UL>
-       <LI><P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">JIS</SPAN></FONT>\82Ì\83}\83b\83`\83\93\83O\82Ì\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½\81B
-               </P>
-</UL>
-<H3><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">Ver.0.35</SPAN></FONT>\81i<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">2004/9/26</SPAN></FONT>\81j</H3>
-<UL>
-       <LI><P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_send_mail</SPAN></FONT>\82Ì\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½\81B
-               </P>
-</UL>
-<H3><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">Ver.0.341</SPAN></FONT>\81i<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">2004/9/16</SPAN></FONT>\81j</H3>
-<UL>
-       <LI><P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_convert_kana</SPAN></FONT>\82Ì\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½\81B
-               </P>
-</UL>
-<H3><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">Ver.0.34</SPAN></FONT>\81i<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">2004/9/15</SPAN></FONT>\81j</H3>
-<UL>
-       <LI><P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_convert_kana</SPAN></FONT>\82Ì\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½\81B
-               </P>
-</UL>
-<H3><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">Ver.0.33</SPAN></FONT>\81i<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">2004/8/27</SPAN></FONT>\81j</H3>
-<UL>
-       <LI><P STYLE="margin-bottom: 0cm"><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_encode_numericentity,
-       mb_decode_numericentity</SPAN></FONT>\82ð\83T\83|\81[\83g\82µ\82Ü\82µ\82½\81
-       </P>
-       <LI><P STYLE="margin-bottom: 0cm"><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_convert_encoding</SPAN></FONT>\82Å<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">UTF-16</SPAN></FONT>\82©\82ç\82Ì\95Ï\8a·\82ð\83T\83|\81[\83g\82µ\82Ü\82µ\82½\81B
-               </P>
-       <LI><P STYLE="margin-bottom: 0cm">\83V\83t\83g<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">JIS</SPAN></FONT>\82Ì\8f\88\97\9d\82ð<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">SJIS-WIN</SPAN></FONT>\8cÝ\8a·\82É\82µ\82Ü\82µ\82½\81B<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US"><BR>mbstring</SPAN></FONT>\96{\89Æ\82Æ\82Í\88Ù\82È\82è\81C<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">SJIS</SPAN></FONT>\82Æ<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">SJIS-WIN</SPAN></FONT>\82Ì\93®\8dì\82Í\93¯\82\82Å\82·\81B
-               </P>
-       <LI><P STYLE="margin-bottom: 0cm"><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_strcut</SPAN></FONT>\82Ì\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½\81B
-               </P>
-       <LI><P>\95Ï\8dX\97\9a\97ð\82ð<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">HTML</SPAN></FONT>\82É\95Ï\82¦\82Ü\82µ\82½\81B
-               </P>
-</UL>
-<H3><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">Ver.0.32(2004/8/19)</SPAN></FONT></H3>
-<UL>
-       <LI><P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_http_input,
-       mb_http_output, mb_output_handler
-       </SPAN></FONT>\82ð\83T\83|\81[\83g\82µ\82Ü\82µ\82½<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US"><BR></SPAN></FONT>\82½\82¾\82µ\81C<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_http_input</SPAN></FONT>\82É\8aÖ\82µ\82Ä\82Í\95\8e\9a\83R\81[\83h\95Ï\8a·\82ð\8ds\82í\82È\82¢\82½\82ß\81C\8fí\82É<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">FALSE</SPAN></FONT>\82ð\95Ô\82µ\82Ü\82·\81B
-               </P>
-</UL>
-<H3><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">Ver.0.31(2004/8/16)</SPAN></FONT></H3>
-<UL>
-       <LI><P STYLE="margin-bottom: 0cm"><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_decode_mimeheader</SPAN></FONT>\82Ì\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½
-               </P>
-       <LI><P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_convert_variables</SPAN></FONT>\82Ì\8f\89\8aú\90Ý\92è\83`\83F\83b\83N\82Ì\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½
-               </P>
-</UL>
-<H3><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">Ver.0.3(2004/8/8)</SPAN></FONT></H3>
-<UL>
-       <LI><P STYLE="margin-bottom: 0cm">\83o\83O\82Â\82Ô\82µ<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US"><BR></SPAN></FONT>\93ü\82ê\8eq\82Ì\83t\83@\83\93\83N\83V\83\87\83\93\82Å\93ñ\8fd\90é\8c¾\82É\82È\82Á\82Ä\82µ\82Ü\82¤\8fê\8d\87\82ª\82 \82é\82Ì\82Å\8aO\95\94\82É\8fo\82µ\82Ü\82µ\82½\81B
-               </P>
-       <LI><P STYLE="margin-bottom: 0cm">\83o\83O\82Â\82Ô\82µ<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US"><BR>mb_strcut</SPAN></FONT>\82Ì\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½
-               </P>
-       <LI><P STYLE="margin-bottom: 0cm"><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_encode_mimeheader,
-       mb_decode_mimeheader</SPAN></FONT>\82ð\83T\83|\81[\83g\82µ\82Ü\82µ\82½\81
-       </P>
-       <LI><P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_convert_variables</SPAN></FONT>\82Å\94z\97ñ\82©\82ç\82Ì\95Ï\8a·\82ð\83T\83|\81[\83g\82µ\82Ü\82µ\82½\81B<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US"><BR></SPAN></FONT>\82±\82ê\82É\94º\82¢<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_convert_variables</SPAN></FONT>\82ð<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">2</SPAN></FONT>\83p\83^\81[\83\93\82É\82µ\81C\8f\89\8aú\90Ý\92è\82Å\95Ï\8dX\82Å\82«\82é\82æ\82¤\82É\82µ\82Ü\82µ\82½\81B<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US"><BR></SPAN></FONT>\8f\89\8aú\90Ý\92è\83t\83@\83C\83\8b\82Ì<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">convert-variables-arrayonly</SPAN></FONT>\82ª<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">no</SPAN></FONT>\82Ì\8fê\8d\87\81i\83f\83t\83H\83\8b\83g\81j\81C\82±\82ê\82Ü\82Å\82Æ\93¯\82\82æ\82¤\82É\94z\97ñ\82Å\82È\82­\82Ä\82à\95Ï\8a·\82µ\82Ü\82·\81B\82Ü\82½\81C\8dÅ\8f\89\82Ì\97v\91f\82ª\94z\97ñ\82Ì\8fê\8d\87\81C\82»\82ê\82¾\82¯\82ð\95Ï\8a·\82µ\82Ü\82·\81B\82½\82¾\82µ\81C\82±\82¿\82ç\82Ì\8fê\8d\87\81C\8cÄ\82Ñ\8fo\82µ\8e\9e\82É\88ø\90\94\82É<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">&amp;</SPAN></FONT>\82ð\95t\82¯\82Ä\96¾\8e¦\93I\82É\8eQ\8fÆ\93n\82µ\82É\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US"><BR>convert-variables-arrayonly</SPAN></FONT>\82ª<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">no</SPAN></FONT>\82Å\82È\82¢\8fê\8d\87\81C\95Ï\8a·\82·\82é\88ø\90\94\82Í\94z\97ñ\82¾\82¯\82É\82È\82è\82Ü\82·\81B\82»\82Ì\91ã\82í\82è\81C<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">&amp;</SPAN></FONT>\82Í\95s\97v\82Å\82·\81B
-               </P>
-</UL>
-<H3><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">Ver.0.25(2004/7/7)</SPAN></FONT></H3>
-<UL>
-       <LI><P>\83o\83O\82Â\82Ô\82µ<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US"><BR></SPAN></FONT>\93ü\82ê\8eq\82Ì\83t\83@\83\93\83N\83V\83\87\83\93\82Å\93ñ\8fd\90é\8c¾\82É\82È\82Á\82Ä\82µ\82Ü\82¤\8fê\8d\87\82ª\82 \82é\82Ì\82Å\8aO\95\94\82É\8fo\82µ\82Ü\82µ\82½\81B
-               </P>
-</UL>
-<H3><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">ver.0.24(2004/6/8)</SPAN></FONT></H3>
-<UL>
-       <LI><P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_strpos,
-       mb_substr_count, mb_preferred_mime_name</SPAN></FONT>\82ð\83T\83|\81[\83g\82µ\82Ü\82µ\82½\81B
-               </P>
-</UL>
-<H3><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">ver.0.23(2004/5/19)</SPAN></FONT></H3>
-<UL>
-       <LI><P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_convert_encoding</SPAN></FONT>\82Å<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">UTF-16</SPAN></FONT>\82Ö\82Ì\95Ï\8a·\82ð\83T\83|\81[\83g\82µ\82Ü\82µ\82½\81B<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US"><BR><BR>usage:<BR>$str
-       = mb_convert_encoding($str, 'UTF-16', 'EUC-JP,
-       UTF-8');<BR><BR></SPAN></FONT>\95Ô\82·\82Ì\82Í<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">BOM</SPAN></FONT>\82È\82µ\82Ì\83r\83b\83O\81E\83G\83\93\83f\83B\83A\83\93\82É\82È\82è\82Ü\82·\81B
-               </P>
-</UL>
-<H3><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">ver.0.22(2004/5/11)</SPAN></FONT></H3>
-<UL>
-       <LI><P STYLE="margin-bottom: 0cm">\83o\83O\82Â\82Ô\82µ 
-       </P>
-       <LI><P STYLE="margin-bottom: 0cm"><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_convert_variables</SPAN></FONT>\82ð\8eb\92è\83T\83|\81[\83g
-               </P>
-       <LI><P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_strwidth</SPAN></FONT>\82ð\83T\83|\81[\83g
-               </P>
-</UL>
-<H3><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">ver.0.21(2004/4/28)</SPAN></FONT></H3>
-<UL>
-       <LI><P STYLE="margin-bottom: 0cm">\8f\89\8aú\90Ý\92è\82ð<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb-emulator.ini</SPAN></FONT>\82©\82ç\93Ç\82Þ\82æ\82¤\82É\95Ï\8dX
-               </P>
-       <LI><P STYLE="margin-bottom: 0cm"><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">EUC</SPAN></FONT>\82Æ<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">UTF-8</SPAN></FONT>\8aÔ\82ð\92¼\90Ú\95Ï\8a·\82·\82é\82æ\82¤\82É\95Ï\8dX
-               </P>
-       <LI><P>\83o\83O\82Â\82Ô\82µ 
-       </P>
-</UL>
-<H3><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">ver.0.2(2004/4/27)</SPAN></FONT></H3>
-<UL>
-       <LI><P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">jcode</SPAN></FONT>\82ð\8eg\82í\82È\82¢\8c`\82Å\93Æ\97§\82µ\82Ü\82µ\82½\81B<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">12</SPAN></FONT>\8aÖ\90\94\83T\83|\81[\83g<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US"><BR>mb_language,
-       mb_internal_encoding, mb_convert_encoding, mb_convert_kana,
-       mb_send_mail, mb_strimwidth, mb_detect_encoding, mb_detect_order,
-       mb_strlen, mb_substr, mb_strcut, mb_strrpos </SPAN></FONT>
-       </P>
-</UL>
-<H2>\8aÖ\90\94\83T\83|\81[\83g\8fó\8bµ\81i<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">2004/8/19</SPAN></FONT>\81j</H2>
-<TABLE CELLPADDING=2 CELLSPACING=2>
-       <TR>
-               <TD WIDTH=150>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US"><B>mbstring</B></SPAN></FONT><B>\8aÖ\90\94\96¼</B></P>
-               </TD>
-               <TD WIDTH=300>
-                       <P><B>\8d¡\8cã\82Ì\83T\83|\81[\83g\97\\92è</B></P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_convert_case</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\89Â\94\\82¾\82¯\82Ç\8c\8b\8d\\91å\95Ï\82»\82¤\81B\82 \82Ü\82è\8eg\82¢\82»\82¤\82É\82È\82¢\8bC\82ª\82·\82é\81B\82à\82µ\83j\81[\83Y\82ª\82 \82ê\82Î</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_convert_encoding</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\8dÏ\82Ý</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_convert_kana</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\8dÏ\82Ý</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_convert_variables</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\8dÏ\82Ý</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_decode_mimeheader</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\8dÏ\82Ý</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_decode_numericentity</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\8dÏ\82Ý</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_detect_encoding</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\8dÏ\82Ý</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_detect_order</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\8dÏ\82Ý</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_encode_mimeheader</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\8dÏ\82Ý</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_encode_numericentity</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\8dÏ\82Ý</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_ereg_match</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\95s\89Â\94\</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_ereg_replace</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\95s\89Â\94\</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_ereg_search_getpos</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\95s\89Â\94\</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_ereg_search_getregs</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\95s\89Â\94\</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_ereg_search_init</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\95s\89Â\94\</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_ereg_search_pos</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\95s\89Â\94\</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_ereg_search_regs</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\95s\89Â\94\</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_ereg_search_setpos</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\95s\89Â\94\</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_ereg_search</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\95s\89Â\94\</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_ereg</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\95s\89Â\94\</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_eregi_replace</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\95s\89Â\94\</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_eregi</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\95s\89Â\94\</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_get_info</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\89Â\94\</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_http_input</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\8dÏ\82Ý\81i\8fí\82É<FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">FALSE</SPAN></FONT>\82ð\95Ô\82·\81j</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_http_output</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\8dÏ\82Ý</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_internal_encoding</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\8dÏ\82Ý</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_language</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\8dÏ\82Ý\81i\82½\82¾\82µ\8ew\92è\82µ\82Ä\82à\89½\82à\95Ï\82í\82ç\82È\82¢\81j</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_output_handler</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\8dÏ\82Ý</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_parse_str</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\89Â\94\</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_preferred_mime_name</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\8dÏ\82Ý</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_regex_encoding</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\95s\89Â\94\</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_regex_set_options</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\95s\89Â\94\</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_send_mail</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\8dÏ\82Ý</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_split</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\95s\89Â\94\</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_strcut</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\8dÏ\82Ý</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_strimwidth</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\8dÏ\82Ý</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_strlen</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\8dÏ\82Ý</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_strpos</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\8dÏ\82Ý</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_strrpos</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\8dÏ\82Ý</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_strtolower</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\89Â\94\\82¾\82¯\82Ç\91å\95Ï\82»\82¤</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_strtoupper</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\89Â\94\\82¾\82¯\82Ç\91å\95Ï\82»\82¤</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_strwidth</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\8dÏ\82Ý</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_substitute_character</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\93ï\82µ\82»\82¤</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_substr_count</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\8dÏ\82Ý</P>
-               </TD>
-       </TR>
-       <TR>
-               <TD>
-                       <P><FONT FACE="Times New Roman, serif"><SPAN LANG="en-US">mb_substr</SPAN></FONT></P>
-               </TD>
-               <TD>
-                       <P>\83T\83|\81[\83g\8dÏ\82Ý</P>
-               </TD>
-       </TR>
-</TABLE>
-<P><BR><BR>
-</P>
-</BODY>
-</HTML>
\ No newline at end of file
+<html>
+<head>
+
+  <meta http-equiv="CONTENT-TYPE" content="text/html; charset=shift_jis">
+  <title>\95Ï\8dX\97\9a\97ð</title>
+
+
+  <meta name="GENERATOR" content="OpenOffice.org 1.1.3 (Win32)">
+
+  <meta name="CREATED" content="20050130;2310982">
+
+  <meta name="CHANGED" content="20050130;2372139">
+
+</head>
+
+
+<body style="direction: ltr;" lang="ja-JP">
+
+<h2>\95Ï\8dX\97\9a\97ð</h2>
+
+<h3><font face="Times New Roman, serif"><span lang="en-US">mbstring\83G\83~\83\85\83\8c\81[\83^ for Japanese Ver.0.84</span></font>\81i<font face="Times New Roman, serif"><span lang="en-US">2006/1/23</span></font>\81j</h3>
+
+<ul>
+
+  <li>\83V\83t\83gJIS\82Å\94¼\8ap\83J\83\93\83}\82Ì\8f\88\97\9d\82ª\82¨\82©\82µ\82©\82Á\82½\82Ì\82ð\8fC\90³\82µ\82Ü\82µ\82½</li>
+</ul>
+
+<h3><font face="Times New Roman, serif"><span lang="en-US">mbstring\83G\83~\83\85\83\8c\81[\83^ for Japanese Ver.0.83</span></font>\81i<font face="Times New Roman, serif"><span lang="en-US">2005/12/15</span></font>\81j</h3>
+
+<ul>
+
+  <li>mb_send_mail\82Åmb_language\82ªja\82¾\82Á\82½\82Æ\82«\82É\91Î\89\9e\82µ\82Ü\82µ\82½</li>
+  <li>mb_send_mail\82Å\93ú\96{\8cê\8f\88\97\9d\82Ì\8dÅ\8cã\82Ébreak\82ª\82È\82©\82Á\82½\82Ì\82Å\89Á\82¦\82Ü\82µ\82½</li>
+</ul>
+
+<h3><font face="Times New Roman, serif"><span lang="en-US">mbstring\83G\83~\83\85\83\8c\81[\83^ for Japanese Ver.0.82</span></font>\81i<font face="Times New Roman, serif"><span lang="en-US">2005/11/28</span></font>\81j</h3>
+
+<ul>
+
+  <li>mb_language\82Å\83p\83\89\83\81\81[\83^\82ª\82È\82©\82Á\82½\8fê\8d\87\82Éwarning\82ª\8fo\82Ä\82µ\82Ü\82¤\82Ì\82ð\8fC\90³\82µ\82Ü\82µ\82½</li>
+  <li>mb_send_mail\93à\95\94\82Å_is_encoded\82ð\8cÄ\82Ñ\8fo\82µ\82Ä\82¢\82é\82Ì\82ð_check_encoding\82ð\8cÄ\82Ô\82æ\82¤\82É\8fC\90³\82µ\82Ü\82µ\82½</li>
+</ul>
+
+<h3><font face="Times New Roman, serif"><span lang="en-US">mbstring\83G\83~\83\85\83\8c\81[\83^ for Japanese Ver.0.81</span></font>\81i<font face="Times New Roman, serif"><span lang="en-US">2005/10/09</span></font>\81j</h3>
+
+<ul>
+
+  <li>$jis_match\82ª\96¢\92è\8b`\82¾\82Á\82½\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½</li>
+</ul>
+
+<h3><font face="Times New Roman, serif"><span lang="en-US">mbstring\83G\83~\83\85\83\8c\81[\83^ for Japanese Ver.0.8</span></font>\81i<font face="Times New Roman, serif"><span lang="en-US">2005/8/23</span></font>\81j</h3>
+
+<ul>
+
+  <li>\96¼\8fÌ\82ðmbstring\83G\83~\83\85\83\8c\81[\83^ for Japanese\82É\95Ï\8dX\82µ\82Ü\82µ\82½</li>
+  <li>
+mb_substitute_character\83T\83|\81[\83g\82µ\82Ü\82µ\82½
+  </li>
+
+  <li>
+mb_convert_case\83T\83|\81[\83g\82µ\82Ü\82µ\82½
+  </li>
+
+  <li>
+mb_get_info\83T\83|\81[\83g\82µ\82Ü\82µ\82½
+  </li>
+
+  <li>
+mb_strtolower\83T\83|\81[\83g\82µ\82Ü\82µ\82½
+  </li>
+
+  <li>
+mb_strtoupper\83T\83|\81[\83g\82µ\82Ü\82µ\82½</li>
+  <li>MB_CASE_UPPER\81CMB_CASE_LOWER\81CMB_CASE_CASE\82ð\92è\8b`\82µ\82Ü\82µ\82½</li>
+
+  <li>\83O\83\8d\81[\83o\83\8b\95Ï\90\94\82ð$mbemu_internals\82É\8fW\96ñ\82µ\82Ü\82µ\82½</li>
+
+  <li>\83G\83\93\83R\81[\83f\83B\83\93\83O\82ÉSHIFT_JIS\81CISO-8859-1\82ð\92Ç\89Á\82µ\82Ü\82µ\82½</li>
+
+  <li>\95Ï\8a·\83e\81[\83u\83\8b\82ð\95K\97v\8e\9e\82É\93Ç\82Ý\8d\9e\82Þ\82æ\82¤\82É\8fC\90³\82µ\82Ü\82µ\82½</li>
+  <li>
+               mb_convert_kana\82Ì\83G\83\93\83R\81[\83f\83B\83\93\83O\82ª\8ew\92è\82³\82ê\82Ä\82¢\82È\82¢\82Æ\82«\81Cinternal_encoding\82Ì\92l\82ð\8eg\82¤\82æ\82¤\82É\8fC\90³\82µ\82Ü\82µ\82½</li>
+
+</ul>
+
+<h3><font face="Times New Roman, serif"><span lang="en-US">Ver.0.37</span></font>\81i<font face="Times New Roman, serif"><span lang="en-US">2005/1/30</span></font>\81j</h3>
+
+<ul>
+
+  <li>
+    <p><font face="Times New Roman, serif"><span lang="en-US">JIS</span></font>\82Ì\83}\83b\83`\83\93\83O\82Ì\83o\83O\82ð\8dÄ\82Ñ\8fC\90³\82µ\82Ü\82µ\82½\81B
+    </p>
+
+  </li>
+
+</ul>
+
+<h3><font face="Times New Roman, serif"><span lang="en-US">Ver.0.36</span></font>\81i<font face="Times New Roman, serif"><span lang="en-US">2004/11/13</span></font>\81j</h3>
+
+<ul>
+
+  <li>
+    <p><font face="Times New Roman, serif"><span lang="en-US">JIS</span></font>\82Ì\83}\83b\83`\83\93\83O\82Ì\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½\81B </p>
+
+  </li>
+
+</ul>
+
+<h3><font face="Times New Roman, serif"><span lang="en-US">Ver.0.35</span></font>\81i<font face="Times New Roman, serif"><span lang="en-US">2004/9/26</span></font>\81j</h3>
+
+<ul>
+
+  <li>
+    <p><font face="Times New Roman, serif"><span lang="en-US">mb_send_mail</span></font>\82Ì\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ
+\82½\81B </p>
+
+  </li>
+
+</ul>
+
+<h3><font face="Times New Roman, serif"><span lang="en-US">Ver.0.341</span></font>\81i<font face="Times New Roman, serif"><span lang="en-US">2004/9/16</span></font>\81j</h3>
+
+<ul>
+
+  <li>
+    <p><font face="Times New Roman, serif"><span lang="en-US">mb_convert_kana</span></font>\82Ì\83o\83O\82ð\8fC\90³\82µ
+\82Ü\82µ\82½\81B </p>
+
+  </li>
+
+</ul>
+
+<h3><font face="Times New Roman, serif"><span lang="en-US">Ver.0.34</span></font>\81i<font face="Times New Roman, serif"><span lang="en-US">2004/9/15</span></font>\81j</h3>
+
+<ul>
+
+  <li>
+    <p><font face="Times New Roman, serif"><span lang="en-US">mb_convert_kana</span></font>\82Ì\83o\83O\82ð\8fC\90³\82µ
+\82Ü\82µ\82½\81B </p>
+
+  </li>
+
+</ul>
+
+<h3><font face="Times New Roman, serif"><span lang="en-US">Ver.0.33</span></font>\81i<font face="Times New Roman, serif"><span lang="en-US">2004/8/27</span></font>\81j</h3>
+
+<ul>
+
+  <li>
+    <p style="margin-bottom: 0cm;"><font face="Times New Roman, serif"><span lang="en-US">mb_encode_numericentity,
+mb_decode_numericentity</span></font>\82ð\83T\83|\81[\83g\82µ\82Ü\82µ\82½\81B </p>
+
+  </li>
+
+  <li>
+    <p style="margin-bottom: 0cm;"><font face="Times New Roman, serif"><span lang="en-US">mb_convert_encoding</span></font>\82Å<font face="Times New Roman, serif"><span lang="en-US">UTF-16</span></font>\82©
+\82ç\82Ì\95Ï\8a·\82ð\83T\83|\81[\83g\82µ\82Ü\82µ\82½\81B </p>
+
+  </li>
+
+  <li>
+    <p style="margin-bottom: 0cm;">\83V\83t\83g<font face="Times New Roman, serif"><span lang="en-US">JIS</span></font>\82Ì
+\8f\88\97\9d\82ð<font face="Times New Roman, serif"><span lang="en-US">SJIS-WIN</span></font>\8cÝ\8a·\82É\82µ\82Ü\82µ\82½\81B<font face="Times New Roman, serif"><span lang="en-US"><br>
+
+mbstring</span></font>\96{\89Æ\82Æ\82Í\88Ù\82È\82è\81C<font face="Times New Roman, serif"><span lang="en-US">SJIS</span></font>\82Æ<font face="Times New Roman, serif"><span lang="en-US">SJIS-WIN</span></font>\82Ì
+\93®\8dì\82Í\93¯\82\82Å\82·\81B </p>
+
+  </li>
+
+  <li>
+    <p style="margin-bottom: 0cm;"><font face="Times New Roman, serif"><span lang="en-US">mb_strcut</span></font>\82Ì
+\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½\81B </p>
+
+  </li>
+
+  <li>
+    <p>\95Ï\8dX\97\9a\97ð\82ð<font face="Times New Roman, serif"><span lang="en-US">HTML</span></font>\82É\95Ï\82¦\82Ü\82µ\82½\81B </p>
+
+  </li>
+
+</ul>
+
+<h3><font face="Times New Roman, serif"><span lang="en-US">Ver.0.32(2004/8/19)</span></font></h3>
+
+<ul>
+
+  <li>
+    <p><font face="Times New Roman, serif"><span lang="en-US">mb_http_input, mb_http_output,
+mb_output_handler </span></font>\82ð\83T\83|\81[\83g\82µ\82Ü\82µ\82½<font face="Times New Roman, serif"><span lang="en-US"><br>
+
+    </span></font>\82½\82¾\82µ\81C<font face="Times New Roman, serif"><span lang="en-US">mb_http_input</span></font>\82É\8aÖ\82µ\82Ä\82Í\95\8e\9a\83R\81[
+\83h\95Ï\8a·\82ð\8ds\82í\82È\82¢\82½\82ß\81C\8fí\82É<font face="Times New Roman, serif"><span lang="en-US">FALSE</span></font>\82ð\95Ô\82µ\82Ü\82·\81B </p>
+
+  </li>
+
+</ul>
+
+<h3><font face="Times New Roman, serif"><span lang="en-US">Ver.0.31(2004/8/16)</span></font></h3>
+
+<ul>
+
+  <li>
+    <p style="margin-bottom: 0cm;"><font face="Times New Roman, serif"><span lang="en-US">mb_decode_mimeheader</span></font>\82Ì
+\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½ </p>
+
+  </li>
+
+  <li>
+    <p><font face="Times New Roman, serif"><span lang="en-US">mb_convert_variables</span></font>\82Ì\8f\89
+\8aú\90Ý\92è\83`\83F\83b\83N\82Ì\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½ </p>
+
+  </li>
+
+</ul>
+
+<h3><font face="Times New Roman, serif"><span lang="en-US">Ver.0.3(2004/8/8)</span></font></h3>
+
+<ul>
+
+  <li>
+    <p style="margin-bottom: 0cm;">\83o\83O\82Â\82Ô\82µ<font face="Times New Roman, serif"><span lang="en-US"><br>
+
+    </span></font>\93ü\82ê\8eq\82Ì\83t\83@\83\93\83N\83V\83\87\83\93\82Å\93ñ\8fd\90é\8c¾\82É\82È\82Á\82Ä\82µ\82Ü\82¤\8fê\8d\87\82ª\82 \82é\82Ì\82Å\8aO\95\94\82É\8fo\82µ\82Ü\82µ\82½\81B </p>
+
+  </li>
+
+  <li>
+    <p style="margin-bottom: 0cm;">\83o\83O\82Â\82Ô\82µ<font face="Times New Roman, serif"><span lang="en-US"><br>
+
+mb_strcut</span></font>\82Ì\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½ </p>
+
+  </li>
+
+  <li>
+    <p style="margin-bottom: 0cm;"><font face="Times New Roman, serif"><span lang="en-US">mb_encode_mimeheader,
+mb_decode_mimeheader</span></font>\82ð\83T\83|\81[\83g\82µ\82Ü\82µ\82½\81B </p>
+
+  </li>
+
+  <li>
+    <p><font face="Times New Roman, serif"><span lang="en-US">mb_convert_variables</span></font>\82Å\94z
+\97ñ\82©\82ç\82Ì\95Ï\8a·\82ð\83T\83|\81[\83g\82µ\82Ü\82µ\82½\81B<font face="Times New Roman, serif"><span lang="en-US"><br>
+
+    </span></font>\82±\82ê\82É\94º\82¢<font face="Times New Roman, serif"><span lang="en-US">mb_convert_variables</span></font>\82ð<font face="Times New Roman, serif"><span lang="en-US">2</span></font>\83p
+\83^\81[\83\93\82É\82µ\81C\8f\89\8aú\90Ý\92è\82Å\95Ï\8dX\82Å\82«\82é\82æ\82¤\82É\82µ\82Ü\82µ\82½\81B<font face="Times New Roman, serif"><span lang="en-US"><br>
+
+    </span></font>\8f\89\8aú\90Ý\92è\83t\83@\83C\83\8b\82Ì<font face="Times New Roman, serif"><span lang="en-US">convert-variables-arrayonly</span></font>\82ª<font face="Times New Roman, serif"><span lang="en-US">no</span></font>\82Ì
+\8fê\8d\87\81i\83f\83t\83H\83\8b\83g\81j\81C\82±\82ê\82Ü\82Å\82Æ\93¯\82\82æ\82¤\82É\94z\97ñ\82Å\82È\82­\82Ä\82à\95Ï\8a·\82µ\82Ü\82·\81B\82Ü\82½\81C\8dÅ\8f\89\82Ì\97v\91f\82ª\94z\97ñ\82Ì\8fê\8d\87\81C\82»\82ê\82¾\82¯\82ð\95Ï\8a·\82µ\82Ü\82·\81B\82½\82¾\82µ\81C\82±\82¿\82ç\82Ì\8fê\8d\87\81C\8cÄ\82Ñ
+\8fo\82µ\8e\9e\82É\88ø\90\94\82É<font face="Times New Roman, serif"><span lang="en-US">&amp;</span></font>\82ð\95t\82¯\82Ä\96¾\8e¦\93I\82É\8eQ\8fÆ\93n\82µ\82É
+\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B<font face="Times New Roman, serif"><span lang="en-US"><br>
+
+convert-variables-arrayonly</span></font>\82ª<font face="Times New Roman, serif"><span lang="en-US">no</span></font>\82Å
+\82È\82¢\8fê\8d\87\81C\95Ï\8a·\82·\82é\88ø\90\94\82Í\94z\97ñ\82¾\82¯\82É\82È\82è\82Ü\82·\81B\82»\82Ì\91ã\82í\82è\81C<font face="Times New Roman, serif"><span lang="en-US">&amp;</span></font>\82Í\95s\97v\82Å\82·\81B </p>
+
+  </li>
+
+</ul>
+
+<h3><font face="Times New Roman, serif"><span lang="en-US">Ver.0.25(2004/7/7)</span></font></h3>
+
+<ul>
+
+  <li>
+    <p>\83o\83O\82Â\82Ô\82µ<font face="Times New Roman, serif"><span lang="en-US"><br>
+
+    </span></font>\93ü\82ê\8eq\82Ì\83t\83@\83\93\83N\83V\83\87\83\93\82Å\93ñ\8fd\90é\8c¾\82É\82È\82Á\82Ä\82µ\82Ü\82¤\8fê\8d\87\82ª\82 \82é\82Ì\82Å\8aO\95\94\82É\8fo\82µ\82Ü\82µ\82½\81B </p>
+
+  </li>
+
+</ul>
+
+<h3><font face="Times New Roman, serif"><span lang="en-US">ver.0.24(2004/6/8)</span></font></h3>
+
+<ul>
+
+  <li>
+    <p><font face="Times New Roman, serif"><span lang="en-US">mb_strpos, mb_substr_count,
+mb_preferred_mime_name</span></font>\82ð\83T\83|\81[\83g\82µ\82Ü\82µ\82½\81B </p>
+
+  </li>
+
+</ul>
+
+<h3><font face="Times New Roman, serif"><span lang="en-US">ver.0.23(2004/5/19)</span></font></h3>
+
+<ul>
+
+  <li>
+    <p><font face="Times New Roman, serif"><span lang="en-US">mb_convert_encoding</span></font>\82Å<font face="Times New Roman, serif"><span lang="en-US">UTF-16</span></font>\82Ö
+\82Ì\95Ï\8a·\82ð\83T\83|\81[\83g\82µ\82Ü\82µ\82½\81B<font face="Times New Roman, serif"><span lang="en-US"><br>
+
+    <br>
+
+usage:<br>
+
+$str = mb_convert_encoding($str, 'UTF-16', 'EUC-JP, UTF-8');<br>
+
+    <br>
+
+    </span></font>\95Ô\82·\82Ì\82Í<font face="Times New Roman, serif"><span lang="en-US">BOM</span></font>\82È\82µ\82Ì\83r\83b\83O\81E\83G\83\93\83f\83B\83A\83\93\82É\82È\82è\82Ü\82·\81B
+    </p>
+
+  </li>
+
+</ul>
+
+<h3><font face="Times New Roman, serif"><span lang="en-US">ver.0.22(2004/5/11)</span></font></h3>
+
+<ul>
+
+  <li>
+    <p style="margin-bottom: 0cm;">\83o\83O\82Â\82Ô\82µ </p>
+
+  </li>
+
+  <li>
+    <p style="margin-bottom: 0cm;"><font face="Times New Roman, serif"><span lang="en-US">mb_convert_variables</span></font>\82ð
+\8eb\92è\83T\83|\81[\83g </p>
+
+  </li>
+
+  <li>
+    <p><font face="Times New Roman, serif"><span lang="en-US">mb_strwidth</span></font>\82ð\83T\83|\81[\83g </p>
+
+  </li>
+
+</ul>
+
+<h3><font face="Times New Roman, serif"><span lang="en-US">ver.0.21(2004/4/28)</span></font></h3>
+
+<ul>
+
+  <li>
+    <p style="margin-bottom: 0cm;">\8f\89\8aú\90Ý\92è\82ð<font face="Times New Roman, serif"><span lang="en-US">mb-emulator.ini</span></font>\82©
+\82ç\93Ç\82Þ\82æ\82¤\82É\95Ï\8dX </p>
+
+  </li>
+
+  <li>
+    <p style="margin-bottom: 0cm;"><font face="Times New Roman, serif"><span lang="en-US">EUC</span></font>\82Æ<font face="Times New Roman, serif"><span lang="en-US">UTF-8</span></font>\8aÔ
+\82ð\92¼\90Ú\95Ï\8a·\82·\82é\82æ\82¤\82É\95Ï\8dX </p>
+
+  </li>
+
+  <li>
+    <p>\83o\83O\82Â\82Ô\82µ </p>
+
+  </li>
+
+</ul>
+
+<h3><font face="Times New Roman, serif"><span lang="en-US">ver.0.2(2004/4/27)</span></font></h3>
+
+<ul>
+
+  <li>
+    <p><font face="Times New Roman, serif"><span lang="en-US">jcode</span></font>\82ð\8eg\82í\82È\82¢\8c`\82Å\93Æ\97§\82µ\82Ü\82µ\82½\81B<font face="Times New Roman, serif"><span lang="en-US">12</span></font>\8aÖ
+\90\94\83T\83|\81[\83g<font face="Times New Roman, serif"><span lang="en-US"><br>
+
+mb_language, mb_internal_encoding, mb_convert_encoding,
+mb_convert_kana, mb_send_mail, mb_strimwidth, mb_detect_encoding,
+mb_detect_order, mb_strlen, mb_substr, mb_strcut, mb_strrpos </span></font>
+    </p>
+
+  </li>
+
+</ul>
+
+<h2>\8aÖ\90\94\83T\83|\81[\83g\8fó\8bµ\81i<font face="Times New Roman, serif"><span lang="en-US">2004/8/19</span></font>\81j</h2>
+
+<table cellpadding="2" cellspacing="2">
+
+  <tbody>
+
+    <tr>
+
+      <td width="150">
+      <p><font face="Times New Roman, serif"><span lang="en-US"><b>mbstring</b></span></font><b>\8aÖ
+\90\94\96¼</b></p>
+
+      </td>
+
+      <td width="300">
+      <p><b>\8d¡\8cã\82Ì\83T\83|\81[\83g\97\\92è</b></p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_convert_case</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\89Â\94\\82¾\82¯\82Ç\8c\8b\8d\\91å\95Ï\82»\82¤\81B\82 \82Ü\82è\8eg\82¢\82»\82¤\82É\82È\82¢\8bC\82ª\82·\82é\81B\82à\82µ\83j\81[\83Y\82ª\82 \82ê\82Î</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_convert_encoding</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\8dÏ\82Ý</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_convert_kana</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\8dÏ\82Ý</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_convert_variables</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\8dÏ\82Ý</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_decode_mimeheader</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\8dÏ\82Ý</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_decode_numericentity</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\8dÏ\82Ý</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_detect_encoding</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\8dÏ\82Ý</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_detect_order</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\8dÏ\82Ý</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_encode_mimeheader</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\8dÏ\82Ý</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_encode_numericentity</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\8dÏ\82Ý</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_ereg_match</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\95s\89Â\94\</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_ereg_replace</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\95s\89Â\94\</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_ereg_search_getpos</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\95s\89Â\94\</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_ereg_search_getregs</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\95s\89Â\94\</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_ereg_search_init</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\95s\89Â\94\</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_ereg_search_pos</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\95s\89Â\94\</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_ereg_search_regs</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\95s\89Â\94\</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_ereg_search_setpos</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\95s\89Â\94\</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_ereg_search</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\95s\89Â\94\</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_ereg</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\95s\89Â\94\</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_eregi_replace</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\95s\89Â\94\</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_eregi</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\95s\89Â\94\</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_get_info</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\89Â\94\</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_http_input</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\8dÏ\82Ý\81i\8fí\82É<font face="Times New Roman, serif"><span lang="en-US">FALSE</span></font>\82ð\95Ô\82·\81j</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_http_output</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\8dÏ\82Ý</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_internal_encoding</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\8dÏ\82Ý</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_language</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\8dÏ\82Ý\81i\82½\82¾\82µ\8ew\92è\82µ\82Ä\82à\89½\82à\95Ï\82í\82ç\82È\82¢\81j</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_output_handler</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\8dÏ\82Ý</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_parse_str</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\89Â\94\</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_preferred_mime_name</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\8dÏ\82Ý</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_regex_encoding</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\95s\89Â\94\</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_regex_set_options</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\95s\89Â\94\</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_send_mail</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\8dÏ\82Ý</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_split</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\95s\89Â\94\</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_strcut</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\8dÏ\82Ý</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_strimwidth</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\8dÏ\82Ý</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_strlen</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\8dÏ\82Ý</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_strpos</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\8dÏ\82Ý</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_strrpos</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\8dÏ\82Ý</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_strtolower</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\89Â\94\\82¾\82¯\82Ç\91å\95Ï\82»\82¤</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_strtoupper</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\89Â\94\\82¾\82¯\82Ç\91å\95Ï\82»\82¤</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_strwidth</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\8dÏ\82Ý</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_substitute_character</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\93ï\82µ\82»\82¤</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_substr_count</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\8dÏ\82Ý</p>
+
+      </td>
+
+    </tr>
+
+    <tr>
+
+      <td>
+      <p><font face="Times New Roman, serif"><span lang="en-US">mb_substr</span></font></p>
+
+      </td>
+
+      <td>
+      <p>\83T\83|\81[\83g\8dÏ\82Ý</p>
+
+      </td>
+
+    </tr>
+
+  </tbody>
+</table>
+
+<p><br>
+
+<br>
+
+</p>
+
+</body>
+</html>
diff --git a/nucleus/libs/mb_emulator/lower.table b/nucleus/libs/mb_emulator/lower.table
new file mode 100644 (file)
index 0000000..57e44ce
--- /dev/null
@@ -0,0 +1,615 @@
+<?php
+$mbemu_internals['lowerarray'] = array (
+0x00C0 => 0x00E0,
+0x00C1 => 0x00E1,
+0x00C2 => 0x00E2,
+0x00C3 => 0x00E3,
+0x00C4 => 0x00E4,
+0x00C5 => 0x00E5,
+0x00C6 => 0x00E6,
+0x00C7 => 0x00E7,
+0x00C8 => 0x00E8,
+0x00C9 => 0x00E9,
+0x00CA => 0x00EA,
+0x00CB => 0x00EB,
+0x00CC => 0x00EC,
+0x00CD => 0x00ED,
+0x00CE => 0x00EE,
+0x00CF => 0x00EF,
+0x00D0 => 0x00F0,
+0x00D1 => 0x00F1,
+0x00D2 => 0x00F2,
+0x00D3 => 0x00F3,
+0x00D4 => 0x00F4,
+0x00D5 => 0x00F5,
+0x00D6 => 0x00F6,
+0x00D8 => 0x00F8,
+0x00D9 => 0x00F9,
+0x00DA => 0x00FA,
+0x00DB => 0x00FB,
+0x00DC => 0x00FC,
+0x00DD => 0x00FD,
+0x00DE => 0x00FE, 
+0x0100 => 0x0101,
+0x0102 => 0x0103,
+0x0104 => 0x0105,
+0x0106 => 0x0107,
+0x0108 => 0x0109,
+0x010A => 0x010B,
+0x010C => 0x010D,
+0x010E => 0x010F,
+0x0110 => 0x0111,
+0x0112 => 0x0113,
+0x0114 => 0x0115,
+0x0116 => 0x0117,
+0x0118 => 0x0119,
+0x011A => 0x011B,
+0x011C => 0x011D,
+0x011E => 0x011F,
+0x0120 => 0x0121,
+0x0122 => 0x0123,
+0x0124 => 0x0125,
+0x0126 => 0x0127,
+0x0128 => 0x0129,
+0x012A => 0x012B,
+0x012C => 0x012D,
+0x012E => 0x012F,
+0x0130 => 0x0069,
+0x0132 => 0x0133,
+0x0134 => 0x0135,
+0x0136 => 0x0137,
+0x0139 => 0x013A,
+0x013B => 0x013C,
+0x013D => 0x013E,
+0x013F => 0x0140,
+0x0141 => 0x0142,
+0x0143 => 0x0144,
+0x0145 => 0x0146,
+0x0147 => 0x0148,
+0x014A => 0x014B,
+0x014C => 0x014D,
+0x014E => 0x014F,
+0x0150 => 0x0151,
+0x0152 => 0x0153,
+0x0154 => 0x0155,
+0x0156 => 0x0157,
+0x0158 => 0x0159,
+0x015A => 0x015B,
+0x015C => 0x015D,
+0x015E => 0x015F,
+0x0160 => 0x0161,
+0x0162 => 0x0163,
+0x0164 => 0x0165,
+0x0166 => 0x0167,
+0x0168 => 0x0169,
+0x016A => 0x016B,
+0x016C => 0x016D,
+0x016E => 0x016F,
+0x0170 => 0x0171,
+0x0172 => 0x0173,
+0x0174 => 0x0175,
+0x0176 => 0x0177,
+0x0178 => 0x00FF,
+0x0179 => 0x017A,
+0x017B => 0x017C,
+0x017D => 0x017E,
+0x0181 => 0x0253,
+0x0182 => 0x0183,
+0x0184 => 0x0185,
+0x0186 => 0x0254,
+0x0187 => 0x0188,
+0x0189 => 0x0256,
+0x018A => 0x0257,
+0x018B => 0x018C,
+0x018E => 0x01DD,
+0x018F => 0x0259,
+0x0190 => 0x025B,
+0x0191 => 0x0192,
+0x0193 => 0x0260,
+0x0194 => 0x0263,
+0x0196 => 0x0269,
+0x0197 => 0x0268,
+0x0198 => 0x0199,
+0x019C => 0x026F,
+0x019D => 0x0272,
+0x019F => 0x0275,
+0x01A0 => 0x01A1,
+0x01A2 => 0x01A3,
+0x01A4 => 0x01A5,
+0x01A6 => 0x0280,
+0x01A7 => 0x01A8,
+0x01A9 => 0x0283,
+0x01AC => 0x01AD,
+0x01AE => 0x0288,
+0x01AF => 0x01B0,
+0x01B1 => 0x028A,
+0x01B2 => 0x028B,
+0x01B3 => 0x01B4,
+0x01B5 => 0x01B6,
+0x01B7 => 0x0292,
+0x01B8 => 0x01B9,
+0x01BC => 0x01BD,
+0x01C4 => 0x01C6,
+0x01C7 => 0x01C9,
+0x01CA => 0x01CC,
+0x01CD => 0x01CE,
+0x01CF => 0x01D0,
+0x01D1 => 0x01D2,
+0x01D3 => 0x01D4,
+0x01D5 => 0x01D6,
+0x01D7 => 0x01D8,
+0x01D9 => 0x01DA,
+0x01DB => 0x01DC,
+0x01DE => 0x01DF,
+0x01E0 => 0x01E1,
+0x01E2 => 0x01E3,
+0x01E4 => 0x01E5,
+0x01E6 => 0x01E7,
+0x01E8 => 0x01E9,
+0x01EA => 0x01EB,
+0x01EC => 0x01ED,
+0x01EE => 0x01EF,
+0x01F1 => 0x01F3,
+0x01F4 => 0x01F5,
+0x01F6 => 0x0195,
+0x01F7 => 0x01BF,
+0x01F8 => 0x01F9,
+0x01FA => 0x01FB,
+0x01FC => 0x01FD,
+0x01FE => 0x01FF,
+0x0200 => 0x0201,
+0x0202 => 0x0203,
+0x0204 => 0x0205,
+0x0206 => 0x0207,
+0x0208 => 0x0209,
+0x020A => 0x020B,
+0x020C => 0x020D,
+0x020E => 0x020F,
+0x0210 => 0x0211,
+0x0212 => 0x0213,
+0x0214 => 0x0215,
+0x0216 => 0x0217,
+0x0218 => 0x0219,
+0x021A => 0x021B,
+0x021C => 0x021D,
+0x021E => 0x021F,
+0x0220 => 0x019E,
+0x0222 => 0x0223,
+0x0224 => 0x0225,
+0x0226 => 0x0227,
+0x0228 => 0x0229,
+0x022A => 0x022B,
+0x022C => 0x022D,
+0x022E => 0x022F,
+0x0230 => 0x0231,
+0x0232 => 0x0233,
+0x0386 => 0x03AC,
+0x0388 => 0x03AD,
+0x0389 => 0x03AE,
+0x038A => 0x03AF,
+0x038C => 0x03CC,
+0x038E => 0x03CD,
+0x038F => 0x03CE,
+0x0391 => 0x03B1,
+0x0392 => 0x03B2,
+0x0393 => 0x03B3,
+0x0394 => 0x03B4,
+0x0395 => 0x03B5,
+0x0396 => 0x03B6,
+0x0397 => 0x03B7,
+0x0398 => 0x03B8,
+0x0399 => 0x03B9,
+0x039A => 0x03BA,
+0x039B => 0x03BB,
+0x039C => 0x03BC,
+0x039D => 0x03BD,
+0x039E => 0x03BE,
+0x039F => 0x03BF,
+0x03A0 => 0x03C0,
+0x03A1 => 0x03C1,
+0x03A3 => 0x03C3,
+0x03A4 => 0x03C4,
+0x03A5 => 0x03C5,
+0x03A6 => 0x03C6,
+0x03A7 => 0x03C7,
+0x03A8 => 0x03C8,
+0x03A9 => 0x03C9,
+0x03AA => 0x03CA,
+0x03AB => 0x03CB,
+0x03D8 => 0x03D9,
+0x03DA => 0x03DB,
+0x03DC => 0x03DD,
+0x03DE => 0x03DF,
+0x03E0 => 0x03E1,
+0x03E2 => 0x03E3,
+0x03E4 => 0x03E5,
+0x03E6 => 0x03E7,
+0x03E8 => 0x03E9,
+0x03EA => 0x03EB,
+0x03EC => 0x03ED,
+0x03EE => 0x03EF,
+0x03F4 => 0x03B8,
+0x0400 => 0x0450,
+0x0401 => 0x0451,
+0x0402 => 0x0452,
+0x0403 => 0x0453,
+0x0404 => 0x0454,
+0x0405 => 0x0455,
+0x0406 => 0x0456,
+0x0407 => 0x0457,
+0x0408 => 0x0458,
+0x0409 => 0x0459,
+0x040A => 0x045A,
+0x040B => 0x045B,
+0x040C => 0x045C,
+0x040D => 0x045D,
+0x040E => 0x045E,
+0x040F => 0x045F,
+0x0410 => 0x0430,
+0x0411 => 0x0431,
+0x0412 => 0x0432,
+0x0413 => 0x0433,
+0x0414 => 0x0434,
+0x0415 => 0x0435,
+0x0416 => 0x0436,
+0x0417 => 0x0437,
+0x0418 => 0x0438,
+0x0419 => 0x0439,
+0x041A => 0x043A,
+0x041B => 0x043B,
+0x041C => 0x043C,
+0x041D => 0x043D,
+0x041E => 0x043E,
+0x041F => 0x043F,
+0x0420 => 0x0440,
+0x0421 => 0x0441,
+0x0422 => 0x0442,
+0x0423 => 0x0443,
+0x0424 => 0x0444,
+0x0425 => 0x0445,
+0x0426 => 0x0446,
+0x0427 => 0x0447,
+0x0428 => 0x0448,
+0x0429 => 0x0449,
+0x042A => 0x044A,
+0x042B => 0x044B,
+0x042C => 0x044C,
+0x042D => 0x044D,
+0x042E => 0x044E,
+0x042F => 0x044F,
+0x0460 => 0x0461,
+0x0462 => 0x0463,
+0x0464 => 0x0465,
+0x0466 => 0x0467,
+0x0468 => 0x0469,
+0x046A => 0x046B,
+0x046C => 0x046D,
+0x046E => 0x046F,
+0x0470 => 0x0471,
+0x0472 => 0x0473,
+0x0474 => 0x0475,
+0x0476 => 0x0477,
+0x0478 => 0x0479,
+0x047A => 0x047B,
+0x047C => 0x047D,
+0x047E => 0x047F,
+0x0480 => 0x0481,
+0x048A => 0x048B,
+0x048C => 0x048D,
+0x048E => 0x048F,
+0x0490 => 0x0491,
+0x0492 => 0x0493,
+0x0494 => 0x0495,
+0x0496 => 0x0497,
+0x0498 => 0x0499,
+0x049A => 0x049B,
+0x049C => 0x049D,
+0x049E => 0x049F,
+0x04A0 => 0x04A1,
+0x04A2 => 0x04A3,
+0x04A4 => 0x04A5,
+0x04A6 => 0x04A7,
+0x04A8 => 0x04A9,
+0x04AA => 0x04AB,
+0x04AC => 0x04AD,
+0x04AE => 0x04AF,
+0x04B0 => 0x04B1,
+0x04B2 => 0x04B3,
+0x04B4 => 0x04B5,
+0x04B6 => 0x04B7,
+0x04B8 => 0x04B9,
+0x04BA => 0x04BB,
+0x04BC => 0x04BD,
+0x04BE => 0x04BF,
+0x04C1 => 0x04C2,
+0x04C3 => 0x04C4,
+0x04C5 => 0x04C6,
+0x04C7 => 0x04C8,
+0x04C9 => 0x04CA,
+0x04CB => 0x04CC,
+0x04CD => 0x04CE,
+0x04D0 => 0x04D1,
+0x04D2 => 0x04D3,
+0x04D4 => 0x04D5,
+0x04D6 => 0x04D7,
+0x04D8 => 0x04D9,
+0x04DA => 0x04DB,
+0x04DC => 0x04DD,
+0x04DE => 0x04DF,
+0x04E0 => 0x04E1,
+0x04E2 => 0x04E3,
+0x04E4 => 0x04E5,
+0x04E6 => 0x04E7,
+0x04E8 => 0x04E9,
+0x04EA => 0x04EB,
+0x04EC => 0x04ED,
+0x04EE => 0x04EF,
+0x04F0 => 0x04F1,
+0x04F2 => 0x04F3,
+0x04F4 => 0x04F5,
+0x04F8 => 0x04F9,
+0x0500 => 0x0501,
+0x0502 => 0x0503,
+0x0504 => 0x0505,
+0x0506 => 0x0507,
+0x0508 => 0x0509,
+0x050A => 0x050B,
+0x050C => 0x050D,
+0x050E => 0x050F,
+0x0531 => 0x0561,
+0x0532 => 0x0562,
+0x0533 => 0x0563,
+0x0534 => 0x0564,
+0x0535 => 0x0565,
+0x0536 => 0x0566,
+0x0537 => 0x0567,
+0x0538 => 0x0568,
+0x0539 => 0x0569,
+0x053A => 0x056A,
+0x053B => 0x056B,
+0x053C => 0x056C,
+0x053D => 0x056D,
+0x053E => 0x056E,
+0x053F => 0x056F,
+0x0540 => 0x0570,
+0x0541 => 0x0571,
+0x0542 => 0x0572,
+0x0543 => 0x0573,
+0x0544 => 0x0574,
+0x0545 => 0x0575,
+0x0546 => 0x0576,
+0x0547 => 0x0577,
+0x0548 => 0x0578,
+0x0549 => 0x0579,
+0x054A => 0x057A,
+0x054B => 0x057B,
+0x054C => 0x057C,
+0x054D => 0x057D,
+0x054E => 0x057E,
+0x054F => 0x057F,
+0x0550 => 0x0580,
+0x0551 => 0x0581,
+0x0552 => 0x0582,
+0x0553 => 0x0583,
+0x0554 => 0x0584,
+0x0555 => 0x0585,
+0x0556 => 0x0586,
+0x1E00 => 0x1E01,
+0x1E02 => 0x1E03,
+0x1E04 => 0x1E05,
+0x1E06 => 0x1E07,
+0x1E08 => 0x1E09,
+0x1E0A => 0x1E0B,
+0x1E0C => 0x1E0D,
+0x1E0E => 0x1E0F,
+0x1E10 => 0x1E11,
+0x1E12 => 0x1E13,
+0x1E14 => 0x1E15,
+0x1E16 => 0x1E17,
+0x1E18 => 0x1E19,
+0x1E1A => 0x1E1B,
+0x1E1C => 0x1E1D,
+0x1E1E => 0x1E1F,
+0x1E20 => 0x1E21,
+0x1E22 => 0x1E23,
+0x1E24 => 0x1E25,
+0x1E26 => 0x1E27,
+0x1E28 => 0x1E29,
+0x1E2A => 0x1E2B,
+0x1E2C => 0x1E2D,
+0x1E2E => 0x1E2F,
+0x1E30 => 0x1E31,
+0x1E32 => 0x1E33,
+0x1E34 => 0x1E35,
+0x1E36 => 0x1E37,
+0x1E38 => 0x1E39,
+0x1E3A => 0x1E3B,
+0x1E3C => 0x1E3D,
+0x1E3E => 0x1E3F,
+0x1E40 => 0x1E41,
+0x1E42 => 0x1E43,
+0x1E44 => 0x1E45,
+0x1E46 => 0x1E47,
+0x1E48 => 0x1E49,
+0x1E4A => 0x1E4B,
+0x1E4C => 0x1E4D,
+0x1E4E => 0x1E4F,
+0x1E50 => 0x1E51,
+0x1E52 => 0x1E53,
+0x1E54 => 0x1E55,
+0x1E56 => 0x1E57,
+0x1E58 => 0x1E59,
+0x1E5A => 0x1E5B,
+0x1E5C => 0x1E5D,
+0x1E5E => 0x1E5F,
+0x1E60 => 0x1E61,
+0x1E62 => 0x1E63,
+0x1E64 => 0x1E65,
+0x1E66 => 0x1E67,
+0x1E68 => 0x1E69,
+0x1E6A => 0x1E6B,
+0x1E6C => 0x1E6D,
+0x1E6E => 0x1E6F,
+0x1E70 => 0x1E71,
+0x1E72 => 0x1E73,
+0x1E74 => 0x1E75,
+0x1E76 => 0x1E77,
+0x1E78 => 0x1E79,
+0x1E7A => 0x1E7B,
+0x1E7C => 0x1E7D,
+0x1E7E => 0x1E7F,
+0x1E80 => 0x1E81,
+0x1E82 => 0x1E83,
+0x1E84 => 0x1E85,
+0x1E86 => 0x1E87,
+0x1E88 => 0x1E89,
+0x1E8A => 0x1E8B,
+0x1E8C => 0x1E8D,
+0x1E8E => 0x1E8F,
+0x1E90 => 0x1E91,
+0x1E92 => 0x1E93,
+0x1E94 => 0x1E95,
+0x1EA0 => 0x1EA1,
+0x1EA2 => 0x1EA3,
+0x1EA4 => 0x1EA5,
+0x1EA6 => 0x1EA7,
+0x1EA8 => 0x1EA9,
+0x1EAA => 0x1EAB,
+0x1EAC => 0x1EAD,
+0x1EAE => 0x1EAF,
+0x1EB0 => 0x1EB1,
+0x1EB2 => 0x1EB3,
+0x1EB4 => 0x1EB5,
+0x1EB6 => 0x1EB7,
+0x1EB8 => 0x1EB9,
+0x1EBA => 0x1EBB,
+0x1EBC => 0x1EBD,
+0x1EBE => 0x1EBF,
+0x1EC0 => 0x1EC1,
+0x1EC2 => 0x1EC3,
+0x1EC4 => 0x1EC5,
+0x1EC6 => 0x1EC7,
+0x1EC8 => 0x1EC9,
+0x1ECA => 0x1ECB,
+0x1ECC => 0x1ECD,
+0x1ECE => 0x1ECF,
+0x1ED0 => 0x1ED1,
+0x1ED2 => 0x1ED3,
+0x1ED4 => 0x1ED5,
+0x1ED6 => 0x1ED7,
+0x1ED8 => 0x1ED9,
+0x1EDA => 0x1EDB,
+0x1EDC => 0x1EDD,
+0x1EDE => 0x1EDF,
+0x1EE0 => 0x1EE1,
+0x1EE2 => 0x1EE3,
+0x1EE4 => 0x1EE5,
+0x1EE6 => 0x1EE7,
+0x1EE8 => 0x1EE9,
+0x1EEA => 0x1EEB,
+0x1EEC => 0x1EED,
+0x1EEE => 0x1EEF,
+0x1EF0 => 0x1EF1,
+0x1EF2 => 0x1EF3,
+0x1EF4 => 0x1EF5,
+0x1EF6 => 0x1EF7,
+0x1EF8 => 0x1EF9,
+0x1F08 => 0x1F00,
+0x1F09 => 0x1F01,
+0x1F0A => 0x1F02,
+0x1F0B => 0x1F03,
+0x1F0C => 0x1F04,
+0x1F0D => 0x1F05,
+0x1F0E => 0x1F06,
+0x1F0F => 0x1F07,
+0x1F18 => 0x1F10,
+0x1F19 => 0x1F11,
+0x1F1A => 0x1F12,
+0x1F1B => 0x1F13,
+0x1F1C => 0x1F14,
+0x1F1D => 0x1F15,
+0x1F28 => 0x1F20,
+0x1F29 => 0x1F21,
+0x1F2A => 0x1F22,
+0x1F2B => 0x1F23,
+0x1F2C => 0x1F24,
+0x1F2D => 0x1F25,
+0x1F2E => 0x1F26,
+0x1F2F => 0x1F27,
+0x1F38 => 0x1F30,
+0x1F39 => 0x1F31,
+0x1F3A => 0x1F32,
+0x1F3B => 0x1F33,
+0x1F3C => 0x1F34,
+0x1F3D => 0x1F35,
+0x1F3E => 0x1F36,
+0x1F3F => 0x1F37,
+0x1F48 => 0x1F40,
+0x1F49 => 0x1F41,
+0x1F4A => 0x1F42,
+0x1F4B => 0x1F43,
+0x1F4C => 0x1F44,
+0x1F4D => 0x1F45,
+0x1F59 => 0x1F51,
+0x1F5B => 0x1F53,
+0x1F5D => 0x1F55,
+0x1F5F => 0x1F57,
+0x1F68 => 0x1F60,
+0x1F69 => 0x1F61,
+0x1F6A => 0x1F62,
+0x1F6B => 0x1F63,
+0x1F6C => 0x1F64,
+0x1F6D => 0x1F65,
+0x1F6E => 0x1F66,
+0x1F6F => 0x1F67,
+0x1FB8 => 0x1FB0,
+0x1FB9 => 0x1FB1,
+0x1FBA => 0x1F70,
+0x1FBB => 0x1F71,
+0x1FC8 => 0x1F72,
+0x1FC9 => 0x1F73,
+0x1FCA => 0x1F74,
+0x1FCB => 0x1F75,
+0x1FD8 => 0x1FD0,
+0x1FD9 => 0x1FD1,
+0x1FDA => 0x1F76,
+0x1FDB => 0x1F77,
+0x1FE8 => 0x1FE0,
+0x1FE9 => 0x1FE1,
+0x1FEA => 0x1F7A,
+0x1FEB => 0x1F7B,
+0x1FEC => 0x1FE5,
+0x1FF8 => 0x1F78,
+0x1FF9 => 0x1F79,
+0x1FFA => 0x1F7C,
+0x1FFB => 0x1F7D,
+0x2126 => 0x03C9,
+0x212A => 0x006B,
+0x212B => 0x00E5,
+0xFF21 => 0xFF41,
+0xFF22 => 0xFF42,
+0xFF23 => 0xFF43,
+0xFF24 => 0xFF44,
+0xFF25 => 0xFF45,
+0xFF26 => 0xFF46,
+0xFF27 => 0xFF47,
+0xFF28 => 0xFF48,
+0xFF29 => 0xFF49,
+0xFF2A => 0xFF4A,
+0xFF2B => 0xFF4B,
+0xFF2C => 0xFF4C,
+0xFF2D => 0xFF4D,
+0xFF2E => 0xFF4E,
+0xFF2F => 0xFF4F,
+0xFF30 => 0xFF50,
+0xFF31 => 0xFF51,
+0xFF32 => 0xFF52,
+0xFF33 => 0xFF53,
+0xFF34 => 0xFF54,
+0xFF35 => 0xFF55,
+0xFF36 => 0xFF56,
+0xFF37 => 0xFF57,
+0xFF38 => 0xFF58,
+0xFF39 => 0xFF59,
+0xFF3A => 0xFF5A);
+?>
index a8a3eee..c0ae385 100755 (executable)
@@ -3,3 +3,4 @@ internal_encoding=
 detect_order=ASCII, JIS, UTF-8, EUC-JP, SJIS
 convert_variables_arrayonly=no
 http_output=pass
+substitute_character=none
index 24b7767..9490571 100755 (executable)
@@ -1,62 +1,93 @@
 <?php
-/* mb-emulator.php by Andy
+/* mbstring emulator for Japanese by Andy
  * email : webmaster@matsubarafamily.com
  *
  * license based on GPL(GNU General Public License)
  *
- * Ver.0.37 (2005/1/30)
+ * Ver.0.84 (2006/1/20)
  */
 
 
+define('MB_CASE_UPPER', 0);
+define('MB_CASE_LOWER', 1);
+define('MB_CASE_TITLE', 2);
 
 include dirname(__FILE__).'/convert.table';
-include dirname(__FILE__).'/sjistouni.table';
-include dirname(__FILE__).'/unitosjis.table';
+// include dirname(__FILE__).'/sjistouni.table';
+// include dirname(__FILE__).'/unitosjis.table';
 
-$ini_file = parse_ini_file(dirname(__FILE__).'/mb-emulator.ini');
 
-$_language = $ini_file['language'];
-$_internal_encoding = $ini_file['internal_encoding'];
-$_lang_array = array (
-       'Japanese', 'ja', 'English', 'en', 'uni'
+$mbemu_internals['ini_file'] = parse_ini_file(dirname(__FILE__).'/mb-emulator.ini');
+
+$mbemu_internals['language'] = $mbemu_internals['ini_file']['language'];
+$mbemu_internals['internal_encoding'] = $mbemu_internals['ini_file']['internal_encoding'];
+$mbemu_internals['lang_array'] = array (
+       'Japanese', 'ja','jp', 'English', 'en', 'uni'
        );
 
-$_mb_encoding = array (
-       'AUTO' => 0,
+$mbemu_internals['encoding'] = array (
+       'AUTO' => 0xFF,
        'ASCII' => 0,
        'EUC-JP' => 1,
        'EUC' => 1,
        'SJIS' => 2,
        'SHIFT-JIS' => 2,
+       'SHIFT_JIS' => 2,
        'SJIS-WIN' => 2,
        'JIS' => 3,
        'ISO-2022-JP' => 3,
        'UTF-8' => 4,
        'UTF8' => 4,
-       'UTF-16'=>5
+       'UTF-16'=>5,
+       'ISO-8859-1' => 6
        );
 
-if (!(mb_detect_order($ini_file['detect_order'])))
-       $_detect_order = array ("ASCII", "JIS", "UTF-8", "EUC-JP", "SJIS");
 
+function mb_detect_order($encoding_list = '')
+{
+       global $mbemu_internals;
+       
+       if ($encoding_list) {
+               if (is_string($encoding_list)) {
+                       $encoding_list = strtoupper($encoding_list);
+                       $encoding_list = split(', *', $encoding_list);
+               }
+               foreach($encoding_list as $encode)
+                       if (!array_key_exists($encode, $mbemu_internals['encoding'])) return FALSE;
+               $mbemu_internals['detect_order'] = $encoding_list;
+               return TRUE;
+       }
+       return $mbemu_internals['detect_order'];
+}
+
+if (!(mb_detect_order($mbemu_internals['ini_file']['detect_order'])))
+       $mbemu_internals['detect_order'] = array ("ASCII", "JIS", "UTF-8", "EUC-JP", "SJIS");
+
+$mbemu_internals['substitute_character'] = $mbemu_internals['ini_file']['substitute_character'];
+
+$mbemu_internals['regex'] = array(
+       0 => "[\x01-\x7F]", // for ASCII
+       1 => "[\xA1-\xFE]([\xA1-\xFE])|[\x01-\x7F]|\x8E([\xA0-\xDF])", // for EUC-JP
+       2 => "[\x81-\x9F\xE0-\xFC]([\x40-\xFC])|[\x01-\x7F]|[\xA0-\xDF]", // for Shift_JIS
+       3 => "(?:^|\x1B\(\x42)([\x01-\x1A,\x1C-\x7F]*)|(?:\x1B\\$\x42([\x01-\x1A,\x1C-\x7F]*))|(?:\x1B\(I([\x01-\x1A,\x1C-\x7F]*))", // for JIS
+       4 => "[\x01-\x7F]|[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF][\x80-\xBF]", // for UTF-8
+       5 => "..", // for UTF-16
+       6 => "." // for ISO-8859-1
+       );
 
 
-$sjis_match = "[\x81-\x9F,\xE0-\xFC]([\x40-\xFC])|[\x01-\x7F]|[\xA0-\xDF]";
-$euc_match = "[\xa1-\xfe]([\xa1-\xfe])|[\x01-\x7f]|\x8e([\xa0-\xdf])";
-$utf8_match = "[\x01-\x7F]|[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF][\x80-\xBF]";
-$jis_match = "(?:^|\x1b\(\x42)([^\x1b]*)|(?:\x1b\\$\x42([^\x1b]*))|(?:\x1b\(I([^\x1b]*))";
 
-function mb_language($language)
+function mb_language($language='')
 {
-  global $_language, $_lang_array;
+  global $mbemu_internals;
 
   if ($language =='') {
-    if ($_language == '') return FALSE;
-    else return $_language;
+    if ($mbemu_internals['language'] == '') return FALSE;
+    else return $mbemu_internals['language'];
   } else {
-       foreach ($_lang_array as $element) {
+       foreach ($mbemu_internals['lang_array'] as $element) {
                if ($element == $language) {
-                       $_language = $language;
+                       $mbemu_internals['language'] = $language;
                        return TRUE;
                }
        }
@@ -67,29 +98,65 @@ function mb_language($language)
 
 function mb_internal_encoding($encoding = '')
 {
-  global $_internal_encoding;
+       global $mbemu_internals;
 
   if ($encoding =='') {
-    if ($_internal_encoding == '') return FALSE;
-    else return $_internal_encoding;
+    if ($mbemu_internals['internal_encoding'] == '') return FALSE;
+    else return $mbemu_internals['internal_encoding'];
   } else {
-               $_internal_encoding = $encoding;
+               $mbemu_internals['internal_encoding'] = $encoding;
                return TRUE;
   }
 }
 
+function mb_get_info($type = 'all')
+{
+       switch(strtolower($type)) {
+               case 'all' :
+                       $a['internal_encoding'] = mb_internal_encoding();
+                       $a['http_output'] = mb_http_output();
+                       $a['http_input'] = 'pass';
+                       $a['func_overload'] = 'pass';
+                       return $a;
+               case 'internal_encoding' :
+                       return mb_internal_encoding();
+               case 'http_output' :
+                       return mb_http_output();
+               case 'http_input' :
+                       return 'pass';
+               case 'func_overloard' :
+                       return 'pass';
+       }
+}
+
+function mb_substitute_character($subchar='')
+{
+       global $mbemu_internals;
+       
+       if (!$subchar) return $mbemu_internals['substitute_character'];
+       if (is_int($subchar)) {
+               $mbemu_internals['substitute_character'] = $subchar;
+       } else {
+               $subchar = strtolower($subchar);
+               switch ($subchar) {
+                       case 'none' :
+                       case 'long' :
+                               $mbemu_internals['substitute_character'] = $subchar;
+               }
+       }
+}
 
 
 function mb_convert_encoding( $str, $to_encoding, $from_encoding = '')
 {
-       global $_internal_encoding, $_mb_encoding;
+       global $mbemu_internals;
 
        $to_encoding = strtoupper($to_encoding);
        $from_encoding = mb_detect_encoding($str, $from_encoding);
        
-       switch ($_mb_encoding[$from_encoding]) {
+       switch ($mbemu_internals['encoding'][$from_encoding]) {
                case 1: //euc-jp
-                       switch($_mb_encoding[$to_encoding]) {
+                       switch($mbemu_internals['encoding'][$to_encoding]) {
                                case 2: //sjis
                                        return _euctosjis($str);
                                case 3: //jis
@@ -104,7 +171,7 @@ function mb_convert_encoding( $str, $to_encoding, $from_encoding = '')
                                        return $str;
                        }
                case 2: //sjis
-                       switch($_mb_encoding[$to_encoding]) {
+                       switch($mbemu_internals['encoding'][$to_encoding]) {
                                case 1: //euc-jp
                                        return _sjistoeuc($str);
                                case 3: //jis
@@ -118,7 +185,7 @@ function mb_convert_encoding( $str, $to_encoding, $from_encoding = '')
                                        return $str;
                        }
                case 3: //jis
-                       switch($_mb_encoding[$to_encoding]) {
+                       switch($mbemu_internals['encoding'][$to_encoding]) {
                                case 1: //euc-jp
                                        $str = _jistosjis($str);
                                        return _sjistoeuc($str);
@@ -135,7 +202,7 @@ function mb_convert_encoding( $str, $to_encoding, $from_encoding = '')
                                        return $str;
                        }
                case 4: //utf8
-                       switch($_mb_encoding[$to_encoding]) {
+                       switch($mbemu_internals['encoding'][$to_encoding]) {
                                case 1: //euc-jp
                                        return _utf8toeuc($str);
                                case 2: //sjis
@@ -150,7 +217,7 @@ function mb_convert_encoding( $str, $to_encoding, $from_encoding = '')
                        }
                case 5: //utf16
                        $str = _utf16toutf8($str);
-                       switch($_mb_encoding[$to_encoding]) {
+                       switch($mbemu_internals['encoding'][$to_encoding]) {
                                case 1: //euc-jp
                                        return _utf8toeuc($str);
                                case 2: //sjis
@@ -168,34 +235,20 @@ function mb_convert_encoding( $str, $to_encoding, $from_encoding = '')
        }
 }
 
-function _get_encoding(&$str, $encoding)
-{
-       global $_internal_encoding, $_mb_encoding;
-
-       if ($encoding =='') {
-               if ($_internal_encoding == '') {
-                       return mb_detect_encoding($str, mb_detect_order());
-               } else {
-                       return $_internal_encoding;
-               }
-       }
-       return strtoupper($encoding);
-}
-
 
 
 function _sjistoeuc(&$str)
 {
-       global $sjis_match, $_sjistoeuc_byte1, $_sjistoeuc_byte2, $_sjistoeuc_byte1_shift;
+       global $mbemu_internals;
        
-       $max = preg_match_all("/$sjis_match/", $str, $allchars);  // \95\8e\9a\82Ì\94z\97ñ\82É\95ª\89ð
+       $max = preg_match_all('/'.$mbemu_internals['regex'][2].'/', $str, $allchars);  // \95\8e\9a\82Ì\94z\97ñ\82É\95ª\89ð
        $str_EUC = '';
        for ($i = 0; $i < $max; ++$i) {
                $num = ord($allchars[0][$i]);  // \8ae\95\8e\9a\82Ì1\83o\83C\83g\96Ú\82ð\90\94\92l\82Æ\82µ\82Ä\8eæ\82è\8fo\82·
                if ($num2 = ord($allchars[1][$i])) { // 2\83o\83C\83g\96Ú\82ª\82 \82é\8fê\8d\87
-                       $shift = $_sjistoeuc_byte1_shift[$num2];
-                       $str_EUC .= chr($_sjistoeuc_byte1[$num] + $shift)
-                                          .chr($_sjistoeuc_byte2[$shift][$num2]);
+                       $shift = $mbemu_internals['sjistoeuc_byte1_shift'][$num2];
+                       $str_EUC .= chr($mbemu_internals['sjistoeuc_byte1'][$num] + $shift)
+                                          .chr($mbemu_internals['sjistoeuc_byte2'][$shift][$num2]);
                } elseif ($num <= 0x7F) {//\89p\90\94\8e\9a
                        $str_EUC .= chr($num);
                } else { //\94¼\8ap\83J\83i
@@ -208,17 +261,17 @@ function _sjistoeuc(&$str)
 
 function _euctosjis(&$str)
 {
-       global $euc_match, $_euctosjis_byte1, $_euctosjis_byte2;
-       $max = preg_match_all("/$euc_match/", $str, $allchars);  // \95\8e\9a\82Ì\94z\97ñ\82É\95ª\89ð
+       global $mbemu_internals;
+       $max = preg_match_all('/'.$mbemu_internals['regex'][1].'/', $str, $allchars);  // \95\8e\9a\82Ì\94z\97ñ\82É\95ª\89ð
        $str_SJIS = '';
        for ($i = 0; $i < $max; ++$i) {
                $num = ord($allchars[0][$i]);  // \8ae\95\8e\9a\82Ì1\83o\83C\83g\96Ú\82ð\90\94\92l\82Æ\82µ\82Ä\8eæ\82è\8fo\82·
                if ($num2 = ord($allchars[1][$i])) { // \8a¿\8e\9a\82Ì\8fê\8d\87
-                       $str_SJIS .= chr($_euctosjis_byte1[$num]);
+                       $str_SJIS .= chr($mbemu_internals['euctosjis_byte1'][$num]);
                        if ($num & 1)
-                               $str_SJIS .= chr($_euctosjis_byte2[0][$num2]);
+                               $str_SJIS .= chr($mbemu_internals['euctosjis_byte2'][0][$num2]);
                        else
-                               $str_SJIS .= chr($_euctosjis_byte2[1][$num2]);
+                               $str_SJIS .= chr($mbemu_internals['euctosjis_byte2'][1][$num2]);
                } elseif ($num3 = ord($allchars[2][$i])) {//\94¼\8ap\83J\83i
                        $str_SJIS .= chr($num3);
                } else { //\89p\90\94\8e\9a
@@ -230,9 +283,9 @@ function _euctosjis(&$str)
 
 function _sjistojis(&$str)
 {
-       global $sjis_match, $_sjistoeuc_byte1, $_sjistoeuc_byte2, $_sjistoeuc_byte1_shift;
+       global $mbemu_internals;
        
-       $max = preg_match_all("/$sjis_match/", $str, $allchars);  // \95\8e\9a\82Ì\94z\97ñ\82É\95ª\89ð
+       $max = preg_match_all('/'.$mbemu_internals['regex'][2].'/', $str, $allchars);  // \95\8e\9a\82Ì\94z\97ñ\82É\95ª\89ð
        $str_JIS = '';
        $mode = 0; // \89p\90\94
        for ($i = 0; $i < $max; ++$i) {
@@ -242,9 +295,9 @@ function _sjistojis(&$str)
                                $mode = 1;
                                $str_JIS .= chr(0x1b).'$B';
                        }
-                       $shift = $_sjistoeuc_byte1_shift[$num2];
-                       $str_JIS .= chr(($_sjistoeuc_byte1[$num] + $shift) & 0x7F)
-                                          .chr($_sjistoeuc_byte2[$shift][$num2] & 0x7F);
+                       $shift = $mbemu_internals['sjistoeuc_byte1_shift'][$num2];
+                       $str_JIS .= chr(($mbemu_internals['sjistoeuc_byte1'][$num] + $shift) & 0x7F)
+                                          .chr($mbemu_internals['sjistoeuc_byte2'][$shift][$num2] & 0x7F);
                } elseif ($num > 0x80) {//\94¼\8ap\83J\83i
                        if ($mode != 2) {
                                $mode = 2;
@@ -267,23 +320,23 @@ function _sjistojis(&$str)
 
 function _sub_jtosj($match)
 {
-       global $_euctosjis_byte1, $_euctosjis_byte2;
+       global $mbemu_internals;
        $num = ord($match[0]);
        $num2 = ord($match[1]);
-       $s = chr($_euctosjis_byte1[$num | 0x80]);
+       $s = chr($mbemu_internals['euctosjis_byte1'][$num | 0x80]);
        if ($num & 1) {
-               $s .= chr($_euctosjis_byte2[0][$num2 | 0x80]);
+               $s .= chr($mbemu_internals['euctosjis_byte2'][0][$num2 | 0x80]);
        } else {
-               $s .= chr($_euctosjis_byte2[1][$num2 | 0x80]);
+               $s .= chr($mbemu_internals['euctosjis_byte2'][1][$num2 | 0x80]);
        }
        return $s;
 }
 
 function _jistosjis(&$str)
 {
-       global $_euctosjis_byte1, $_euctosjis_byte2, $jis_match;
+       global $mbemu_internals;
        
-       $max = preg_match_all("/$jis_match/", $str, $allchunks, PREG_SET_ORDER);  // \95\8e\9a\8eí\82²\82Æ\82Ì\94z\97ñ\82É\95ª\89ð
+       $max = preg_match_all('/'.$mbemu_internals['regex'][3].'/', $str, $allchunks, PREG_SET_ORDER);  // \95\8e\9a\8eí\82²\82Æ\82Ì\94z\97ñ\82É\95ª\89ð
        $st = '';
        for ($i = 0; $i < $max; ++$i) {
                if (ord($allchunks[$i][1])) { //\89p\90\94\82É\83}\83b\83`
@@ -317,14 +370,14 @@ function _ucs2utf8($uni)
 
 function _sjistoutf8(&$str)
 {
-
-       global $sjis_match, $sjistoucs2;
+       global $mbemu_internals;
+       include_once(dirname(__FILE__).'/sjistouni.table');
        $st = '';
-       $max = preg_match_all("/$sjis_match/", $str, $allchars);  // \95\8e\9a\82Ì\94z\97ñ\82É\95ª\89ð
+       $max = preg_match_all('/'.$mbemu_internals['regex'][2].'/', $str, $allchars);  // \95\8e\9a\82Ì\94z\97ñ\82É\95ª\89ð
        for ($i = 0; $i < $max; ++$i) {
                $num = ord($allchars[0][$i]);  // \8ae\95\8e\9a\82Ì1\83o\83C\83g\96Ú\82ð\90\94\92l\82Æ\82µ\82Ä\8eæ\82è\8fo\82·
                if ($num2 = ord($allchars[1][$i])) { // 2\83o\83C\83g\96Ú\82ª\82 \82é\8fê\8d\87
-                       $ucs2 = $sjistoucs2[($num << 8) | $num2];
+                       $ucs2 = $mbemu_internals['sjistoucs2'][($num << 8) | $num2];
                        $st .= _ucs2utf8($ucs2);
                } elseif ($num > 0x80) {//\94¼\8ap\83J\83i
                        $st .= _ucs2utf8(0xfec0 + $num);
@@ -352,9 +405,10 @@ function _utf8ucs2($st)
 
 function _utf8tosjis(&$str)
 {
-       global $utf8_match, $ucs2tosjis;
+       global $mbemu_internals;
+       include_once(dirname(__FILE__).'/unitosjis.table');
        $st = '';
-       $max = preg_match_all("/$utf8_match/", $str, $allchars);  // \95\8e\9a\82Ì\94z\97ñ\82É\95ª\89ð
+       $max = preg_match_all('/'.$mbemu_internals['regex'][4].'/', $str, $allchars);  // \95\8e\9a\82Ì\94z\97ñ\82É\95ª\89ð
        for ($i = 0; $i < $max; ++$i) {
                $num = _utf8ucs2($allchars[0][$i]); //ucs2\82Ì\92l\82ð\8eæ\82è\8fo\82·
                if ($num < 0x80)
@@ -362,7 +416,7 @@ function _utf8tosjis(&$str)
                elseif ((0xff61 <= $num) && ($num <= 0xff9f))
                        $st .= chr($num - 0xfec0);
                else {
-                       $sjis = $ucs2tosjis[$num];
+                       $sjis = $mbemu_internals['ucs2tosjis'][$num];
                        $st .= chr($sjis >> 8) . chr($sjis & 0xff);
                }
        }
@@ -371,17 +425,18 @@ function _utf8tosjis(&$str)
 
 function _euctoutf8(&$str)
 {
-       global $euc_match, $sjistoucs2, $_euctosjis_byte1, $_euctosjis_byte2;
+       global $mbemu_internals;
+       include_once(dirname(__FILE__).'/sjistouni.table');
        $st = '';
-       $max = preg_match_all("/$euc_match/", $str, $allchars);  // \95\8e\9a\82Ì\94z\97ñ\82É\95ª\89ð
+       $max = preg_match_all('/'.$mbemu_internals['regex'][1].'/', $str, $allchars);  // \95\8e\9a\82Ì\94z\97ñ\82É\95ª\89ð
        for ($i = 0; $i < $max; ++$i) {
                $num = ord($allchars[0][$i]);  // \8ae\95\8e\9a\82Ì1\83o\83C\83g\96Ú\82ð\90\94\92l\82Æ\82µ\82Ä\8eæ\82è\8fo\82·
                if ($num2 = ord($allchars[1][$i])) { // 2\83o\83C\83g\96Ú\82ª\82 \82é\8fê\8d\87
                        if ($num & 1)
-                               $sjis = ($_euctosjis_byte1[$num] << 8) | $_euctosjis_byte2[0][$num2];
+                               $sjis = ($mbemu_internals['euctosjis_byte1'][$num] << 8) | $mbemu_internals['euctosjis_byte2'][0][$num2];
                        else
-                               $sjis = ($_euctosjis_byte1[$num] << 8) | $_euctosjis_byte2[1][$num2];
-                       $st .= _ucs2utf8($sjistoucs2[$sjis]);
+                               $sjis = ($mbemu_internals['euctosjis_byte1'][$num] << 8) | $mbemu_internals['euctosjis_byte2'][1][$num2];
+                       $st .= _ucs2utf8($mbemu_internals['sjistoucs2'][$sjis]);
                } elseif ($num3 = ord($allchars[2][$i])) {
                        $st .= _ucs2utf8(0xfec0 + $num3);
                } else {//\94¼\8ap\89p\90\94
@@ -393,9 +448,10 @@ function _euctoutf8(&$str)
 
 function _utf8toeuc(&$str)
 {
-       global $utf8_match, $ucs2tosjis, $_sjistoeuc_byte1, $_sjistoeuc_byte2, $_sjistoeuc_byte1_shift;
+       global $mbemu_internals;
+       include_once(dirname(__FILE__).'/unitosjis.table');
        $st = '';
-       $max = preg_match_all("/$utf8_match/", $str, $allchars);  // \95\8e\9a\82Ì\94z\97ñ\82É\95ª\89ð
+       $max = preg_match_all('/'.$mbemu_internals['regex'][4].'/', $str, $allchars);  // \95\8e\9a\82Ì\94z\97ñ\82É\95ª\89ð
        for ($i = 0; $i < $max; ++$i) {
                $num = _utf8ucs2($allchars[0][$i]); //ucs2\82Ì\92l\82ð\8eæ\82è\8fo\82·
                if ($num < 0x80)
@@ -403,12 +459,12 @@ function _utf8toeuc(&$str)
                elseif ((0xff61 <= $num) && ($num <= 0xff9f)) //\94¼\8ap\83J\83i
                        $st .= chr(0x8e) . chr($num - 0xfec0);
                else {
-                       $sjis = $ucs2tosjis[$num];
+                       $sjis = $mbemu_internals['ucs2tosjis'][$num];
                        $upper = $sjis >> 8;
                        $lower = $sjis & 0xff;
-                       $shift = $_sjistoeuc_byte1_shift[$lower];
-                       $st .= chr($_sjistoeuc_byte1[$upper] + $shift)
-                                  .chr($_sjistoeuc_byte2[$shift][$lower]);
+                       $shift = $mbemu_internals['sjistoeuc_byte1_shift'][$lower];
+                       $st .= chr($mbemu_internals['sjistoeuc_byte1'][$upper] + $shift)
+                                  .chr($mbemu_internals['sjistoeuc_byte2'][$shift][$lower]);
                }
        }
        return $st;
@@ -416,9 +472,9 @@ function _utf8toeuc(&$str)
 
 function _utf8toutf16(&$str)
 {
-       global $utf8_match;
+       global $mbemu_internals;
        $st = '';
-       $max = preg_match_all("/$utf8_match/", $str, $allchars);  // \95\8e\9a\82Ì\94z\97ñ\82É\95ª\89ð
+       $max = preg_match_all('/'.$mbemu_internals['regex'][4].'/', $str, $allchars);  // \95\8e\9a\82Ì\94z\97ñ\82É\95ª\89ð
        for ($i = 0; $i < $max; ++$i) {
                $num = _utf8ucs2($allchars[0][$i]); //ucs2\82Ì\92l\82ð\8eæ\82è\8fo\82·
                $st .= chr(($num >> 8) & 0xff).chr($num & 0xff);
@@ -428,7 +484,7 @@ function _utf8toutf16(&$str)
 
 function _utf16toutf8(&$str)
 {
-       global $utf8_match;
+       global $mbemu_internals;
        $st = '';
        $ar = unpack("n*", $str);
        foreach($ar as $char) {
@@ -439,14 +495,14 @@ function _utf16toutf8(&$str)
 
        
 function sub_zenhan_EUC(&$str, $match) {
-       global $alphanumeric_convert;
+       global $mbemu_internals;
 
        $match = $match . "|[\xa1-\xfe][\xa1-\xfe]|[\x01-\x7f]|\x8e[\xa0-\xdf]";
        $max = preg_match_all("/$match/", $str, $chars);
        $str = '';
        for ($i = 0; $i < $max; ++$i) {
                if ($num = ord($chars[1][$i])) //\91S\8ap\82É\83}\83b\83`\83\93\83O\82µ\82½\8fê\8d\87
-                       $str .= chr(array_search($chars[1][$i], $alphanumeric_convert));
+                       $str .= chr(array_search($chars[1][$i], $mbemu_internals['alphanumeric_convert']));
                //      $str .= chr($num & 0x7F);
                else
                        $str .= $chars[0][$i];
@@ -454,14 +510,14 @@ function sub_zenhan_EUC(&$str, $match) {
 }
 
 function sub_hanzen_EUC(&$str, $match) {
-       global $alphanumeric_convert;
+       global $mbemu_internals;
 
        $match = $match . "|[\xa1-\xfe][\xa1-\xfe]|[\x01-\x7f]|\x8e[\xa0-\xdf]";
        $max = preg_match_all("/$match/", $str, $chars);
        $str = '';
        for ($i = 0; $i < $max; ++$i) {
                if ($num = ord($chars[1][$i])) //\94¼\8ap\82É\83}\83b\83`\83\93\83O\82µ\82½\8fê\8d\87
-                       $str .= $alphanumeric_convert[$num];
+                       $str .= $mbemu_internals['alphanumeric_convert'][$num];
                else
                        $str .= $chars[0][$i];
        }
@@ -502,39 +558,39 @@ function space_hanzen_EUC(&$str) {
 }
 
 function katakana_zenhan_EUC(&$str) {
-global $kana_zenhan_convert, $special_zenhan_convert;
+       global $mbemu_internals;
 
        $match = "\xa5([\xa1-\xf4])|\xa1([\xa2,\xa3,\xa6,\xab,\xac,\xbc,\xd6,\xd7])|[\xa1-\xfe][\xa1-\xfe]|[\x01-\x7f]|\x8e[\xa0-\xdf]";
        $max = preg_match_all("/$match/", $str, $chars);
        $str = '';
        for ($i = 0; $i < $max; ++$i) {
                if ($num = ord($chars[1][$i])) //\83J\83i\82É\83}\83b\83`\83\93\83O\82µ\82½\8fê\8d\87
-                       $str .= chr(0x8e) . $kana_zenhan_convert[$num];
+                       $str .= chr(0x8e) . $mbemu_internals['kana_zenhan_convert'][$num];
                elseif ($num = ord($chars[2][$i])) //\94¼\8ap\95Ï\8a·\89Â\94\\82È\93Á\8eê\95\8e\9a\82É\83}\83b\83`\82µ\82½\8fê\8d\87
-                       $str .= chr(0x8e) . $special_zenhan_convert[$num];
+                       $str .= chr(0x8e) . $mbemu_internals['special_zenhan_convert'][$num];
                else
                        $str .= $chars[0][$i];
        }
 }
 
 function hiragana_zenhan_EUC(&$str) {
-global $kana_zenhan_convert, $special_zenhan_convert;
+       global $mbemu_internals;
 
        $match = "\xa4([\xa1-\xf4])|\xa1([\xa2,\xa3,\xa6,\xab,\xac,\xbc,\xd6,\xd7])|[\xa1-\xfe][\xa1-\xfe]|[\x01-\x7f]|\x8e[\xa0-\xdf]";
        $max = preg_match_all("/$match/", $str, $chars);
        $str = '';
        for ($i = 0; $i < $max; ++$i) {
                if ($num = ord($chars[1][$i])) //\82©\82È\82É\83}\83b\83`\83\93\83O\82µ\82½\8fê\8d\87
-                       $str .= chr(0x8e) . $kana_zenhan_convert[$num];
+                       $str .= chr(0x8e) . $mbemu_internals['kana_zenhan_convert'][$num];
                elseif ($num = ord($chars[2][$i])) //\94¼\8ap\95Ï\8a·\89Â\94\\82È\93Á\8eê\95\8e\9a\82É\83}\83b\83`\82µ\82½\8fê\8d\87
-                       $str .= chr(0x8e) . $special_zenhan_convert[$num];
+                       $str .= chr(0x8e) . $mbemu_internals['special_zenhan_convert'][$num];
                else
                        $str .= $chars[0][$i];
        }
 }
 
 function katakana_hanzen1_EUC(&$str) { //\91÷\93_\82Ì\93\9d\8d\87\82ð\82·\82é\95û
-global $kana_zenhan_convert, $special_zenhan_convert;
+       global $mbemu_internals;
 
        $match = "\x8e((?:[\xb3,\xb6-\xc4,\xca-\xce]\x8e\xde)|(?:[\xca-\xce]\x8e\xdf))|[\xa1-\xfe][\xa1-\xfe]|[\x01-\x7f]|\x8e([\xa1-\xdf])";
                //\91÷\93_\82â\94¼\91÷\93_\82Í\88ê\8f\8f\82É\83}\83b\83`\83\93\83O
@@ -542,19 +598,19 @@ global $kana_zenhan_convert, $special_zenhan_convert;
        $str = '';
        for ($i = 0; $i < $max; ++$i) {
                if ($chars[1][$i]) //\91÷\89¹\81C\94¼\91÷\89¹\82É\83}\83b\83`\83\93\83O\82µ\82½\8fê\8d\87
-                       $str .= chr(0xa5).chr(array_search($chars[1][$i], $kana_zenhan_convert));
+                       $str .= chr(0xa5).chr(array_search($chars[1][$i], $mbemu_internals['kana_zenhan_convert']));
                elseif ($chars[2][$i]) //\82»\82Ì\91¼\82Ì\94¼\8ap\83J\83i\82É\83}\83b\83`
-                       if ($num = array_search($chars[2][$i], $kana_zenhan_convert))
+                       if ($num = array_search($chars[2][$i], $mbemu_internals['kana_zenhan_convert']))
                                $str .= chr(0xa5).chr($num);
                        else
-                               $str .= chr(0xa1).chr(array_search($chars[2][$i], $special_zenhan_convert));
+                               $str .= chr(0xa1).chr(array_search($chars[2][$i], $mbemu_internals['special_zenhan_convert']));
                else
                        $str .= $chars[0][$i];
        }
 }
 
 function hiragana_hanzen1_EUC(&$str) { //\91÷\93_\82Ì\93\9d\8d\87\82ð\82·\82é\95û
-global $kana_zenhan_convert, $special_zenhan_convert;
+       global $mbemu_internals;
 
        $match = "\x8e((?:[\xb6-\xc4,\xca-\xce]\x8e\xde)|(?:[\xca-\xce]\x8e\xdf))|[\xa1-\xfe][\xa1-\xfe]|[\x01-\x7f]|\x8e([\xa1-\xdf])";
                //\91÷\93_\82â\94¼\91÷\93_\82Í\88ê\8f\8f\82É\83}\83b\83`\83\93\83O
@@ -562,46 +618,46 @@ global $kana_zenhan_convert, $special_zenhan_convert;
        $str = '';
        for ($i = 0; $i < $max; ++$i) {
                if ($chars[1][$i]) //\91÷\89¹\81C\94¼\91÷\89¹\82É\83}\83b\83`\83\93\83O\82µ\82½\8fê\8d\87
-                       $str .= chr(0xa4).chr(array_search($chars[1][$i], $kana_zenhan_convert));
+                       $str .= chr(0xa4).chr(array_search($chars[1][$i], $mbemu_internals['kana_zenhan_convert']));
                elseif ($chars[2][$i]) //\82»\82Ì\91¼\82Ì\94¼\8ap\83J\83i\82É\83}\83b\83`
-                       if ($num = array_search($chars[2][$i], $kana_zenhan_convert))
+                       if ($num = array_search($chars[2][$i], $mbemu_internals['kana_zenhan_convert']))
                                $str .= chr(0xa4).chr($num);
                        else
-                               $str .= chr(0xa1).chr(array_search($chars[2][$i], $special_zenhan_convert));
+                               $str .= chr(0xa1).chr(array_search($chars[2][$i], $mbemu_internals['special_zenhan_convert']));
                else
                        $str .= $chars[0][$i];
        }
 }
 
 function katakana_hanzen2_EUC(&$str) { //\91÷\93_\82Ì\93\9d\8d\87\82ð\82µ\82È\82¢\95û
-global $kana_zenhan_convert, $special_zenhan_convert;
+       global $mbemu_internals;
 
        $match = "[\xa1-\xfe][\xa1-\xfe]|[\x01-\x7f]|\x8e([\xa1-\xdf])";
        $max = preg_match_all("/$match/", $str, $chars);
        $str = '';
        for ($i = 0; $i < $max; ++$i) {
                if ($chars[1][$i]) //\94¼\8ap\83J\83i\82É\83}\83b\83`
-                       if ($num = array_search($chars[1][$i], $kana_zenhan_convert))
+                       if ($num = array_search($chars[1][$i], $mbemu_internals['kana_zenhan_convert']))
                                $str .= chr(0xa5).chr($num);
                        else
-                               $str .= chr(0xa1).chr(array_search($chars[1][$i], $special_zenhan_convert));
+                               $str .= chr(0xa1).chr(array_search($chars[1][$i], $mbemu_internals['special_zenhan_convert']));
                else
                        $str .= $chars[0][$i];
        }
 }
 
 function hiragana_hanzen2_EUC(&$str) { //\91÷\93_\82Ì\93\9d\8d\87\82ð\82µ\82È\82¢\95û
-global $kana_zenhan_convert, $special_zenhan_convert;
+       global $mbemu_internals;
 
        $match = "[\xa1-\xfe][\xa1-\xfe]|[\x01-\x7f]|\x8e([\xa1-\xdf])";
        $max = preg_match_all("/$match/", $str, $chars);
        $str = '';
        for ($i = 0; $i < $max; ++$i) {
                if ($chars[1][$i]) //\94¼\8ap\83J\83i\82É\83}\83b\83`
-                       if ($num = array_search($chars[1][$i], $kana_zenhan_convert))
+                       if ($num = array_search($chars[1][$i], $mbemu_internals['kana_zenhan_convert']))
                                $str .= chr(0xa4).chr($num);
                        else
-                               $str .= chr(0xa1).chr(array_search($chars[1][$i], $special_zenhan_convert));
+                               $str .= chr(0xa1).chr(array_search($chars[1][$i], $mbemu_internals['special_zenhan_convert']));
                else
                        $str .= $chars[0][$i];
        }
@@ -635,7 +691,7 @@ function hiragana_katakana_EUC(&$str) {
 
 function mb_convert_kana( $str, $option='KV', $encoding = '')
 {
-       $encoding = mb_detect_encoding($str, $encoding);
+       if (!$encoding) $encoding = mb_internal_encoding();
        $str = mb_convert_encoding($str, 'EUC-JP', $encoding);
 
        if (strstr($option, "r")) alpha_zenhan_EUC($str);
@@ -667,76 +723,63 @@ function mb_convert_kana( $str, $option='KV', $encoding = '')
        return $str;
 }
 
-function mb_send_mail($to, $subject, $message , $additional_headers, $additional_parameter)
+// if mb_language is uni this function send mail using UTF-8/Base64
+// if English or en this function send mail using ISO-8859-1/quoted printable
+// if Japanese this function send mail using ISO-2022-JP
+function mb_send_mail($to, $subject, $message , $additional_headers='', $additional_parameter='')
 {
-       if (!_is_JIS($subject)) 
-               $subject =mb_encode_mimeheader($subject);
-       else {
-               $tmp = mb_internal_encoding();
-               mb_internal_encoding('iso-2022-jp');
-               $subject =mb_encode_mimeheader($subject);
-               mb_internal_encoding($tmp);
-       }
-       if (!_is_JIS($message))
-               $message = mb_convert_encoding($message, "iso-2022-jp", mb_internal_encoding());
-       $additional_headers .= 
-       "\r\nMime-Version: 1.0\r\nContent-Type: text/plain; charset=ISO-2022-JP\r\nContent-Transfer-Encoding: 7bit";
-       mail($to, $subject, $message, $additional_headers, $additional_parameter); 
-       
-}
-
-
-function mb_detect_order($encoding_list = '')
-{
-       global $_detect_order, $_mb_encoding;
-       
-       if ($encoding_list) {
-               if (is_string($encoding_list)) {
-                       $encoding_list = strtoupper($encoding_list);
-                       $encoding_list = split(', *', $encoding_list);
-               }
-               foreach($encoding_list as $encode)
-                       if (!array_key_exists($encode, $_mb_encoding)) return FALSE;
-               $_detect_order = $encoding_list;
-               return TRUE;
+       switch (mb_language()) {
+               case 'jp' :
+               case 'ja' :
+               case 'Japanese' :
+                       if (!_check_encoding($subject, 3)) //if not JIS encoded
+                               $subject =mb_encode_mimeheader($subject);
+                       else {
+                               $tmp = mb_internal_encoding();
+                               mb_internal_encoding('iso-2022-jp');
+                               $subject =mb_encode_mimeheader($subject);
+                               mb_internal_encoding($tmp);
+                       }
+                       if (!_check_encoding($message, 3))
+                               $message = mb_convert_encoding($message, "iso-2022-jp", mb_internal_encoding());
+                       $additional_headers .= 
+                       "\r\nMime-Version: 1.0\r\nContent-Type: text/plain; charset=ISO-2022-JP\r\nContent-Transfer-Encoding: 7bit";
+                       mail($to, $subject, $message, $additional_headers, $additional_parameter);
+                       break;
+               case 'en' :
+               case 'English' :
+                       $subject =mb_encode_mimeheader($subject, mb_internal_encoding(), 'Q');
+                       $message = _sub_encode_base64($message, mb_internal_encoding(), 76 , "\r\n");
+                       $additional_headers .= 
+                       "\r\nMime-Version: 1.0\r\nContent-Type: text/plain; charset=".
+                       mb_preferred_mime_name(mb_internal_encoding()).
+                       "\r\nContent-Transfer-Encoding: BASE64";
+                       mail($to, $subject, $message, $additional_headers, $additional_parameter); 
+                       break;
+               case 'uni' :
+                       $subject =mb_encode_mimeheader($subject, mb_internal_encoding(), 'B');
+                       $message = _sub_encode_base64($message, mb_internal_encoding(), 76 , "\r\n");
+                       $additional_headers .= 
+                       "\r\nMime-Version: 1.0\r\nContent-Type: text/plain; charset=".
+                       mb_preferred_mime_name(mb_internal_encoding()).
+                       "\r\nContent-Transfer-Encoding: BASE64";
+                       mail($to, $subject, $message, $additional_headers, $additional_parameter); 
+                       break;
        }
-       return $_detect_order;
-}
-
-function _is_Ascii(&$str)
-{
-       return (!ereg("[\x80-\xFF]", $str) && !ereg("\x1B", $str));
-}
-
-function _is_JIS(&$str)
-{
-       return (!ereg("[\x80-\xFF]", $str) && ereg("\x1B", $str));
+       
 }
 
-function _is_SJIS(&$str)
-{
-       $sjis_match = 
-       "[\x01-\x7F]|[\xA0-\xDF]|[\x81-\xFC][\x40-\xFC]";
-       return (preg_match("/^($sjis_match)+$/", $str) == 1);
-}
 
-function _is_EUCJP(&$str)
-{
-       $euc_match = 
-       "[\x01-\x7F]|\x8E[\xA0-\xDF]|\x8F[xA1-\xFE][\xA1-\xFE]|[\xA1-\xFE][\xA1-\xFE]";
-       return (preg_match("/^($euc_match)+$/", $str) == 1);
-}
 
-function _is_UTF8(&$str)
+function _check_encoding($str, $encoding_number)
 {
-       $utf8_match = 
-       "[\x01-\x7F]|[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF][\x80-\xBF]";
-       return (preg_match("/^($utf8_match)+$/", $str) == 1);
+       global $mbemu_internals;
+       return (preg_match('/^('.$mbemu_internals['regex'][$encoding_number].')+$/', $str) == 1);
 }
 
 function mb_detect_encoding( $str , $encoding_list = '')
 {
-       global $_mb_encoding;
+       global $mbemu_internals;
 
        if ($encoding_list == '') 
                        $encoding_list = mb_detect_order();
@@ -749,76 +792,68 @@ function mb_detect_encoding( $str , $encoding_list = '')
                }
        }
        foreach($encoding_list as $encode) {
-               switch ($_mb_encoding[$encode]) {
-                       case 0 : //ascii
-                               if (_is_ASCII($str)) return 'ASCII';
-                               break;
-                       case 1 : //euc-jp
-                               if (_is_EUCJP($str)) return 'EUC-JP';
-                               break;
-                       case 2 : //shift-jis
-                               if (_is_SJIS($str)) return 'SJIS';
-                               break;
-                       case 3 : //jis
-                               if (_is_JIS($str)) return 'JIS';
-                               break;
-                       case 4 : //utf-8
-                               if (_is_UTF8($str)) return 'UTF-8';
-                               break;
-               }
+               if (_check_encoding($str, $mbemu_internals['encoding'][$encode]))
+                       return $encode;
        }
        return $encode;
 }
 
 function mb_strlen ( $str , $encoding='')
 {
-       global $_mb_encoding, $euc_match, $utf8_match, $sjis_match;
+       global $mbemu_internals;
 
-       $encoding = _get_encoding($str, $encoding);
+       $encoding = mb_detect_encoding($str, $encoding);
 
-       switch ($_mb_encoding[$encoding]) {
+       switch ($e = $mbemu_internals['encoding'][$encoding]) {
                case 1 : //euc-jp
-                       return preg_match_all("/$euc_match/", $str, $arr);
-               case 0 : //ascii
-               case 4 : //utf-8
-                       return preg_match_all("/$utf8_match/", $str, $arr);
                case 2 : //shift-jis
-                       return preg_match_all("/$sjis_match/", $str, $arr);
+               case 4 : //utf-8
+                       return preg_match_all('/'.$mbemu_internals['regex'][$e].'/', $str, $arr);
+               case 5 : //utf-16
+                       return strlen($str) >> 1;
+               case 0 : //ascii
+               case 6 : //iso8859-1
+                       return strlen($str);
                case 3 : //jis
                        $str = mb_convert_encoding($str, 'SJIS', 'JIS');
-                       return preg_match_all("/$sjis_match/", $str, $arr);
+                       return preg_match_all('/'.$mbemu_internals['regex'][2].'/', $str, $arr);
        }
 }
 
 function mb_strwidth( $str, $encoding='')
 {
-       global $_mb_encoding, $euc_match, $utf8_match, $sjis_match;
+       global $mbemu_internals;
 
-       $encoding = _get_encoding($str, $encoding);
-       switch ($_mb_encoding[$encoding]) {
-               case 1 : //euc-jp
-                       $max = $len = preg_match_all("/$euc_match/", $str, $arr);
-                       $len;
-                       for ($i=0; $i < $max; ++$i)
-                               if ($arr[1][$i]) ++$len;
-                       return $len;
-               case 0 : //ascii
+       $encoding = mb_detect_encoding($str, $encoding);
+       switch ($e = $mbemu_internals['encoding'][$encoding]) {
                case 4 : //utf-8
-                       $max = $len = preg_match_all("/$utf8_match/", $str, $arr);
+                       $max = $len = preg_match_all('/'.$mbemu_internals['regex'][4].'/', $str, $arr);
                        for ($i=0; $i < $max; ++$i) {
                                $ucs2 = _utf8ucs2($arr[0][$i]);
                                if (((0x2000 <= $ucs2) && ($ucs2 <= 0xff60)) || (0xffa0 <= $ucs2))
                                        ++$len;
                        }
                        return $len;
+               case 1 : //euc-jp
                case 2 : //shift-jis
-                       $max = $len = preg_match_all("/$sjis_match/", $str, $arr);
+                       $max = $len = preg_match_all('/'.$mbemu_internals['regex'][$e].'/', $str, $arr);
                        for ($i=0; $i < $max; ++$i)
                                if ($arr[1][$i]) ++$len;
                        return $len;
+               case 5 : //utf-16
+                       $max = $len = preg_match_all('/'.$mbemu_internals['regex'][5].'/', $str, $arr);
+                       for ($i=0; $i < $max; ++$i) {
+                               $ucs2 = (ord($arr[0][$i]) << 8) | ord(substr($arr[0][$i],1,1));
+                               if (((0x2000 <= $ucs2) && ($ucs2 <= 0xff60)) || (0xffa0 <= $ucs2))
+                                       ++$len;
+                       }
+                       return $len;
+               case 0 : //ascii
+               case 6 : //iso8859-1
+                       return strlen($str);
                case 3 : //jis
                        $str = mb_convert_encoding($str, 'SJIS', 'JIS');
-                       $max = $len = preg_match_all("/$sjis_match/", $str, $arr);
+                       $max = $len = preg_match_all('/'.$mbemu_internals['regex'][2].'/', $str, $arr);
                        for ($i=0; $i < $max; ++$i)
                                if ($arr[1][$i]) ++$len;
                        return $len;
@@ -827,9 +862,9 @@ function mb_strwidth( $str, $encoding='')
 
 function mb_strimwidth( $str, $start, $width, $trimmarker , $encoding = '')
 {
-       global $_mb_encoding, $euc_match, $utf8_match, $sjis_match;
+       global $mbemu_internals;
 
-       $encoding = _get_encoding($str, $encoding);
+       $encoding = mb_detect_encoding($str, $encoding);
        $str = mb_substr($str, $start, 'notnumber', $encoding);
        if (($len = mb_strwidth($str,$encoding)) <= $width)
                return $str;
@@ -837,12 +872,16 @@ function mb_strimwidth( $str, $start, $width, $trimmarker , $encoding = '')
        $width -= $trimwidth;
        if ($width <= 0) return $trimmarker;
        
-       switch ($_mb_encoding[$encoding]) {
-               case 1 : //euc-jp
-                       preg_match_all("/$euc_match/", $str, $arr);
+       switch ($e = $mbemu_internals['encoding'][$encoding]) {
+               case 0 : //ascii
+               case 6 : //iso8859-1
+                       return substr($str, 0, $width).$trimmarker;
+               case 4 : //utf-8
+                       preg_match_all('/'.$mbemu_internals['regex'][4].'/', $str, $arr);
                        $i = 0;
                        while(TRUE) {
-                               if ($arr[1][$i])
+                               $ucs2 = _utf8ucs2($arr[0][$i]);
+                               if (((0x2000 <= $ucs2) && ($ucs2 <= 0xff60)) || (0xffa0 <= $ucs2))
                                        $width -= 2;
                                else
                                        --$width;
@@ -851,12 +890,10 @@ function mb_strimwidth( $str, $start, $width, $trimmarker , $encoding = '')
                        }
                        $arr[0] = array_slice($arr[0], 0, $i);
                        return implode("", $arr[0]).$trimmarker;
-               case 0 : //ascii
-               case 4 : //utf-8
-                       preg_match_all("/$utf8_match/", $str, $arr);
+               case 5 : //utf-16
+                       $arr = unpack("n*", $str);
                        $i = 0;
-                       while(TRUE) {
-                               $ucs2 = _utf8ucs2($arr[0][$i]);
+                       foreach($arr as $ucs2) {
                                if (((0x2000 <= $ucs2) && ($ucs2 <= 0xff60)) || (0xffa0 <= $ucs2))
                                        $width -= 2;
                                else
@@ -866,8 +903,9 @@ function mb_strimwidth( $str, $start, $width, $trimmarker , $encoding = '')
                        }
                        $arr[0] = array_slice($arr[0], 0, $i);
                        return implode("", $arr[0]).$trimmarker;
+               case 1 : //euc-jp
                case 2 : //shift-jis
-                       preg_match_all("/$sjis_match/", $str, $arr);
+                       preg_match_all('/'.$mbemu_internals['regex'][$e].'/', $str, $arr);
                        $i = 0;
                        while(TRUE) {
                                if ($arr[1][$i])
@@ -882,7 +920,7 @@ function mb_strimwidth( $str, $start, $width, $trimmarker , $encoding = '')
                case 3 : //jis
                        $str = mb_convert_encoding($str, 'SJIS', 'JIS');
                        $trimmarker = mb_convert_encoding($trimmarker, 'SJIS', 'JIS');
-                       preg_match_all("/$sjis_match/", $str, $arr);
+                       preg_match_all('/'.$mbemu_internals['regex'][2].'/', $str, $arr);
                        $i = 0;
                        while(TRUE) {
                                if ($arr[1][$i])
@@ -900,31 +938,29 @@ function mb_strimwidth( $str, $start, $width, $trimmarker , $encoding = '')
 
 function mb_substr ( $str, $start , $length='notnumber' , $encoding='')
 {
-       global $_mb_encoding, $euc_match, $utf8_match, $sjis_match;
+       global $mbemu_internals;
 
-       $encoding = _get_encoding($str, $encoding);
+       $encoding = mb_detect_encoding($str, $encoding);
 
-       switch ($_mb_encoding[$encoding]) {
-               case 1 : //euc-jp
-                       preg_match_all("/$euc_match/", $str, $arr);
-                       break;
+       switch ($e = $mbemu_internals['encoding'][$encoding]) {
                case 0 : //ascii
-               case 4 : //utf-8
-                       preg_match_all("/$utf8_match/", $str, $arr);
-                       break;
+               case 1 : //euc-jp
                case 2 : //shift-jis
-                       preg_match_all("/$sjis_match/", $str, $arr);
+               case 4 : //utf-8
+               case 5 : //utf-16
+               case 6 : //iso-8859-1
+                       preg_match_all('/'.$mbemu_internals['regex'][$e].'/', $str, $arr);
                        break;
                case 3 : //jis
                        $str = mb_convert_encoding($str, 'SJIS', 'JIS');
-                       preg_match_all("/$sjis_match/", $str, $arr);
+                       preg_match_all('/'.$mbemu_internals['regex'][2].'/', $str, $arr);
        }
        if (is_int($length))
                $arr[0] = array_slice($arr[0], $start, $length);
        else
                $arr[0] = array_slice($arr[0], $start);
        $str = implode("", $arr[0]);
-       if ($_mb_encoding[$encoding] == 3)
+       if ($mbemu_internals['encoding'][$encoding] == 3)
                $str = mb_convert_encoding($str, 'JIS', 'SJIS');
        return $str;
 }
@@ -954,26 +990,22 @@ function _sub_strcut($arr, $start, $length) {
 
 function mb_strcut ( $str, $start , $length=0 , $encoding = '')
 {
-       global $_mb_encoding, $euc_match, $utf8_match, $sjis_match;
+       global $mbemu_internals;
        
-       
-       $encoding = _get_encoding($str, $encoding);
+       $encoding = mb_detect_encoding($str, $encoding);
 
-       switch ($_mb_encoding[$encoding]) {
-               case 1 : //euc-jp
-                       preg_match_all("/$euc_match/", $str, $arr);
-                       return _sub_strcut($arr, $start, $length);
+       switch ($e = $mbemu_internals['encoding'][$encoding]) {
                case 0 : //ascii
-                       return substr($str, $start, $length);
-               case 4 : //utf-8
-                       preg_match_all("/$utf8_match/", $str, $arr);
-                       return _sub_strcut($arr, $start, $length);
+               case 1 : //euc-jp
                case 2 : //shift-jis
-                       preg_match_all("/$sjis_match/", $str, $arr);
+               case 4 : //utf-8
+               case 5 : //utf-16
+               case 6 : //iso-8859-1
+                       preg_match_all('/'.$mbemu_internals['regex'][$e].'/', $str, $arr);
                        return _sub_strcut($arr, $start, $length);
                case 3 : //jis
                        $str = mb_convert_encoding($str, 'SJIS', 'JIS');
-                       preg_match_all("/$sjis_match/", $str, $arr);
+                       preg_match_all('/'.$mbemu_internals['regex'][2].'/', $str, $arr);
                        $sub = _sub_strcut($arr, $start, $length);
                        return mb_convert_encoding($sub, 'JIS', 'SJIS');
        }
@@ -1000,29 +1032,25 @@ function _sub_strrpos($ar_haystack, $ar_needle)
 function mb_strrpos ( $haystack, $needle , $encoding = '')
 {
        
-       global $_mb_encoding, $euc_match, $utf8_match, $sjis_match;
+       global $mbemu_internals;
        
-       $encoding = _get_encoding($haystack, $encoding);
+       $encoding = mb_detect_encoding($haystack, $encoding);
 
-       switch ($_mb_encoding[$encoding]) {
-               case 1 : //euc-jp
-                       preg_match_all("/$euc_match/", $haystack, $ar_h);
-                       preg_match_all("/$euc_match/", $needle, $ar_n);
-                       return _sub_strrpos($ar_h[0], $ar_n[0]);
+       switch ($e = $mbemu_internals['encoding'][$encoding]) {
                case 0 : //ascii
-               case 4 : //utf-8
-                       preg_match_all("/$utf8_match/", $haystack, $ar_h);
-                       preg_match_all("/$utf8_match/", $needle, $ar_n);
-                       return _sub_strrpos($ar_h[0], $ar_n[0]);
+               case 1 : //euc-jp
                case 2 : //shift-jis
-                       preg_match_all("/$sjis_match/", $haystack, $ar_h);
-                       preg_match_all("/$sjis_match/", $needle, $ar_n);
+               case 4 : //utf-8
+               case 5 : //utf-16
+               case 6 : //iso-8859-1
+                       preg_match_all('/'.$mbemu_internals['regex'][$e].'/', $haystack, $ar_h);
+                       preg_match_all('/'.$mbemu_internals['regex'][$e].'/', $needle, $ar_n);
                        return _sub_strrpos($ar_h[0], $ar_n[0]);
                case 3 : //jis
                        $haystack = mb_convert_encoding($haystack, 'SJIS', 'JIS');
                        $needle = mb_convert_encoding($needle, 'SJIS', 'JIS');
-                       preg_match_all("/$sjis_match/", $haystack, $ar_h);
-                       preg_match_all("/$sjis_match/", $needle, $ar_n);
+                       preg_match_all('/'.$mbemu_internals['regex'][2].'/', $haystack, $ar_h);
+                       preg_match_all('/'.$mbemu_internals['regex'][2].'/', $needle, $ar_n);
                        return _sub_strrpos($ar_h[0], $ar_n[0]);
        }
 }
@@ -1047,29 +1075,25 @@ function _sub_strpos($ar_haystack, $ar_needle, $offset)
 function mb_strpos ( $haystack, $needle , $offset = 0, $encoding = '')
 {
        
-       global $_mb_encoding, $euc_match, $utf8_match, $sjis_match;
+       global $mbemu_internals;
        
-       $encoding = _get_encoding($haystack, $encoding);
+       $encoding = mb_detect_encoding($haystack, $encoding);
 
-       switch ($_mb_encoding[$encoding]) {
-               case 1 : //euc-jp
-                       preg_match_all("/$euc_match/", $haystack, $ar_h);
-                       preg_match_all("/$euc_match/", $needle, $ar_n);
-                       return _sub_strpos($ar_h[0], $ar_n[0], $offset);
+       switch ($e = $mbemu_internals['encoding'][$encoding]) {
                case 0 : //ascii
-               case 4 : //utf-8
-                       preg_match_all("/$utf8_match/", $haystack, $ar_h);
-                       preg_match_all("/$utf8_match/", $needle, $ar_n);
-                       return _sub_strpos($ar_h[0], $ar_n[0], $offset);
+               case 1 : //euc-jp
                case 2 : //shift-jis
-                       preg_match_all("/$sjis_match/", $haystack, $ar_h);
-                       preg_match_all("/$sjis_match/", $needle, $ar_n);
+               case 4 : //utf-8
+               case 5 : //utf-16
+               case 6 : //iso-8859-1
+                       preg_match_all('/'.$mbemu_internals['regex'][$e].'/', $haystack, $ar_h);
+                       preg_match_all('/'.$mbemu_internals['regex'][$e].'/', $needle, $ar_n);
                        return _sub_strpos($ar_h[0], $ar_n[0], $offset);
                case 3 : //jis
                        $haystack = mb_convert_encoding($haystack, 'SJIS', 'JIS');
                        $needle = mb_convert_encoding($needle, 'SJIS', 'JIS');
-                       preg_match_all("/$sjis_match/", $haystack, $ar_h);
-                       preg_match_all("/$sjis_match/", $needle, $ar_n);
+                       preg_match_all('/'.$mbemu_internals['regex'][2].'/', $haystack, $ar_h);
+                       preg_match_all('/'.$mbemu_internals['regex'][2].'/', $needle, $ar_n);
                        return _sub_strpos($ar_h[0], $ar_n[0], $offset);
        }
 }
@@ -1095,29 +1119,25 @@ function _sub_substr_count($ar_haystack, $ar_needle)
 function mb_substr_count($haystack, $needle , $encoding = '')
 {
        
-       global $_mb_encoding, $euc_match, $utf8_match, $sjis_match;
+       global $mbemu_internals;
        
-       $encoding = _get_encoding($haystack, $encoding);
+       $encoding = mb_detect_encoding($haystack, $encoding);
 
-       switch ($_mb_encoding[$encoding]) {
-               case 1 : //euc-jp
-                       preg_match_all("/$euc_match/", $haystack, $ar_h);
-                       preg_match_all("/$euc_match/", $needle, $ar_n);
-                       return _sub_substr_count($ar_h[0], $ar_n[0]);
+       switch ($e = $mbemu_internals['encoding'][$encoding]) {
                case 0 : //ascii
-               case 4 : //utf-8
-                       preg_match_all("/$utf8_match/", $haystack, $ar_h);
-                       preg_match_all("/$utf8_match/", $needle, $ar_n);
-                       return _sub_substr_count($ar_h[0], $ar_n[0]);
+               case 1 : //euc-jp
                case 2 : //shift-jis
-                       preg_match_all("/$sjis_match/", $haystack, $ar_h);
-                       preg_match_all("/$sjis_match/", $needle, $ar_n);
+               case 4 : //utf-8
+               case 5 : //utf-16
+               case 6 : //iso-8859-1
+                       preg_match_all('/'.$mbemu_internals['regex'][$e].'/', $haystack, $ar_h);
+                       preg_match_all('/'.$mbemu_internals['regex'][$e].'/', $needle, $ar_n);
                        return _sub_substr_count($ar_h[0], $ar_n[0]);
                case 3 : //jis
                        $haystack = mb_convert_encoding($haystack, 'SJIS', 'JIS');
                        $needle = mb_convert_encoding($needle, 'SJIS', 'JIS');
-                       preg_match_all("/$sjis_match/", $haystack, $ar_h);
-                       preg_match_all("/$sjis_match/", $needle, $ar_n);
+                       preg_match_all('/'.$mbemu_internals['regex'][2].'/', $haystack, $ar_h);
+                       preg_match_all('/'.$mbemu_internals['regex'][2].'/', $needle, $ar_n);
                        return _sub_substr_count($ar_h[0], $ar_n[0]);
        }
 }
@@ -1126,7 +1146,7 @@ function mb_substr_count($haystack, $needle , $encoding = '')
 /******************
 mb_convert_variables
 *******************/
-if (!$ini_file['convert_variables_arrayonly']) {
+if (!$mbemu_internals['ini_file']['convert_variables_arrayonly']) {
        function mb_convert_variables($to_encoding, $from_encoding, $s1, $s2='',$s3='',$s4='',$s5='',$s6='',$s7='', $s8='',$s9='', $s10='')
        {
                if (is_array($s1)) {
@@ -1172,11 +1192,11 @@ if (!$ini_file['convert_variables_arrayonly']) {
 
 function mb_preferred_mime_name ($encoding)
 {
-       global $_mb_encoding;
+       global $mbemu_internals;
        
        $encoding = strtoupper($encoding);
        
-       switch ($_mb_encoding[$encoding]) {
+       switch ($mbemu_internals['encoding'][$encoding]) {
                case 0 : //ascii
                        return 'US-ASCII';
                case 1 : //euc-jp
@@ -1187,6 +1207,10 @@ function mb_preferred_mime_name ($encoding)
                        return 'ISO-2022-JP';
                case 4 : //utf-8
                        return 'UTF-8';
+               case 5 : 
+                       return 'UTF-16';
+               case 6 :
+                       return 'ISO-8859-1';
        }
 }
 
@@ -1234,23 +1258,16 @@ function _sub_qponechar($str, &$len)
 
 function _sub_quoted_printable_encode($str, $encoding, $maxline, $linefeed)
 {
-       global $_mb_encoding, $euc_match, $utf8_match, $sjis_match, $jis_match;
-       switch ($_mb_encoding[$encoding]) {
+       global $mbemu_internals;
+       switch ($e = $mbemu_internals['encoding'][$encoding]) {
                case 0 : //ascii
-                       $allchars[0] = unpack("c*", $str);
-                       $max = count($allchars[0]);
-                       break;
                case 1 : //euc-jp
-                       $max = preg_match_all("/$euc_match/", $str, $allchars);
-                       break;
                case 2 : //shift-jis
-                       $max = preg_match_all("/$sjis_match/", $str, $allchars);
-                       break;
                case 4 : //utf-8
-                       $max = preg_match_all("/$utf8_match/", $str, $allchars);
+                       $max = preg_match_all('/'.$mbemu_internals['regex'][$e].'/', $str, $allchars);
                        break;
                case 3 : //jis
-                       $max = preg_match_all("/$jis_match/", $str, $allchunks, PREG_SET_ORDER);  // \95\8e\9a\8eí\82²\82Æ\82Ì\94z\97ñ\82É\95ª\89ð
+                       $max = preg_match_all('/'.$mbemu_internals['regex'][3].'/', $str, $allchunks, PREG_SET_ORDER);  // \95\8e\9a\8eí\82²\82Æ\82Ì\94z\97ñ\82É\95ª\89ð
                        $st = ''; // quoted printable\95Ï\8a·\8cã\82Ì\95\8e\9a\97ñ
                        $len = $maxline;  // \82»\82Ì\8ds\82É\92Ç\89Á\89Â\94\\82È\83o\83C\83g\90\94
                        $needterminate = FALSE; //\8dÅ\8cã\82É\83G\83X\83P\81[\83v\83V\81[\83P\83\93\83X\82ª\95K\97v\82©\82Ç\82¤\82©
@@ -1337,33 +1354,31 @@ function _sub_quoted_printable_encode($str, $encoding, $maxline, $linefeed)
 
 function _sub_encode_base64($str, $encoding, $maxline , $linefeed)
 {
-       global $_mb_encoding, $euc_match, $utf8_match, $sjis_match, $jis_match;
-       switch ($_mb_encoding[$encoding]) {
+       global $mbemu_internals;
+       switch ($e = $mbemu_internals['encoding'][$encoding]) {
                case 0 : //ascii
+               case 6 : //iso-8859-1
                        return chunk_split( base64_encode($str) , $maxline, $linefeed);
                case 1 : //euc-jp
-                       $max = preg_match_all("/$euc_match/", $str, $allchars);
-                       break;
                case 2 : //shift-jis
-                       $max = preg_match_all("/$sjis_match/", $str, $allchars);
-                       break;
                case 4 : //utf-8
-                       $max = preg_match_all("/$utf8_match/", $str, $allchars);
+               case 5 : //utf-16
+                       $max = preg_match_all('/'.$mbemu_internals['regex'][$e].'/', $str, $allchars);
                        break;
                case 3 : //jis
-                       $max = preg_match_all("/$jis_match/", $str, $allchunks, PREG_SET_ORDER);  // \95\8e\9a\8eí\82²\82Æ\82Ì\94z\97ñ\82É\95ª\89ð
+                       $max = preg_match_all('/'.$mbemu_internals['regex'][3].'/', $str, $allchunks);  // \95\8e\9a\8eí\82²\82Æ\82Ì\94z\97ñ\82É\95ª\89ð
                        $st = ''; // BASE64\95Ï\8a·\8cã\82Ì\95\8e\9a\97ñ
                        $maxbytes = floor($maxline * 3 / 4);  //1\8ds\82É\95Ï\8a·\89Â\94\\82È\83o\83C\83g\90\94
                        $len = $maxbytes;  // \82»\82Ì\8ds\82É\92Ç\89Á\89Â\94\\82È\83o\83C\83g\90\94
                        $line = '';  //1\8ds\95ª\82Ì\95Ï\8a·\91O\82Ì\95\8e\9a\97ñ
                        $needterminate = FALSE; //\8dÅ\8cã\82É\83G\83X\83P\81[\83v\83V\81[\83P\83\93\83X\82ª\95K\97v\82©\82Ç\82¤\82©
                        for ($i = 0; $i < $max; ++$i) {
-                               if (ord($allchunks[$i][1])) { //\89p\90\94\82É\83}\83b\83`
+                               if (ord($allchunks[1][$i])) { //\89p\90\94\82É\83}\83b\83`
                                        if ($needterminate) {
                                                $line .= chr(0x1B).'(B';
                                                $len -= 3;
                                        }
-                                       $tmpstr = $allchunks[$i][1];  //\92Ç\89Á\82·\82é\95\8e\9a\97ñ
+                                       $tmpstr = $allchunks[1][$i];  //\92Ç\89Á\82·\82é\95\8e\9a\97ñ
                                        $l = strlen($tmpstr);  //\92Ç\89Á\82·\82é\95\8e\9a\97ñ\82Ì\92·\82³
                                        while ($l > $len) {
                                                $line .= substr($tmpstr, 0, $len);
@@ -1376,8 +1391,8 @@ function _sub_encode_base64($str, $encoding, $maxline , $linefeed)
                                        $line .= $tmpstr;
                                        $len -= $l;
                                        $needterminate = FALSE;
-                               } elseif (ord($allchunks[$i][2])) { //\8a¿\8e\9a\82É\83}\83b\83`
-                                       $tmpstr = substr($allchunks[$i][0], 3);
+                               } elseif (ord($allchunks[2][$i])) { //\8a¿\8e\9a\82É\83}\83b\83`
+                                       $tmpstr = substr($allchunks[0][$i], 3);
                                        if ($len < 8) { //\95\8e\9a\82ð\92Ç\89Á\82·\82é\82Ì\82É\8dÅ\92á8\83o\83C\83g\95K\97v\82È\82Ì\82Å
                                                if ($needterminate)
                                                        $line .= chr(0x1B).'(B';
@@ -1402,8 +1417,8 @@ function _sub_encode_base64($str, $encoding, $maxline , $linefeed)
                                        $len -= $l;
                                        $needterminate = TRUE;
                                        
-                               } elseif (ord($allchunks[$i][3])) { //\94¼\8ap\83J\83i\82É\83}\83b\83`
-                                       $tmpstr = $allchunks[$i][3];
+                               } elseif (ord($allchunks[3][$i])) { //\94¼\8ap\83J\83i\82É\83}\83b\83`
+                                       $tmpstr = $allchunks[3][$i];
                                        if ($len < 7) { //\95\8e\9a\82ð\92Ç\89Á\82·\82é\82Ì\82É\8dÅ\92á7\83o\83C\83g\95K\97v\82È\82Ì\82Å
                                                if ($needterminate)
                                                        $line .= chr(0x1B).'(B';
@@ -1451,7 +1466,7 @@ function _sub_encode_base64($str, $encoding, $maxline , $linefeed)
 
 function mb_encode_mimeheader( $str, $encoding = "ISO-2022-JP", $transfer_encoding = "B", $linefeed = "\r\n")
 {
-       global $_mb_encoding;
+       global $mbemu_internals;
        if ($transfer_encoding == "b") $transfer_encoding = "B";
        if ($transfer_encoding <> "B") $transfer_encoding = "Q";
        $encoding = strtoupper($encoding);
@@ -1480,24 +1495,24 @@ function mb_http_input($type = '')
 
 function mb_http_output($encoding = '')
 {
-       global $ini_file;
+       global $mbemu_internals;
        
-       if ($encoding == '') return $ini_file['http_output'];
+       if ($encoding == '') return $mbemu_internals['ini_file']['http_output'];
        if (strtolower($encoding) == 'pass') {
-               $ini_file['http_output'] = 'pass';
+               $mbemu_internals['ini_file']['http_output'] = 'pass';
                return TRUE;
        }
-       $ini_file['http_output'] = mb_preferred_mime_name($encoding);
+       $mbemu_internals['ini_file']['http_output'] = mb_preferred_mime_name($encoding);
        return TRUE;
 }
 
 
 function mb_output_handler ( $buffer, $status='')
 {
-       global $ini_file, $tmpstr;
-       if ($ini_file['http_output'] == 'pass')
+       global $mbemu_internals;
+       if ($mbemu_internals['ini_file']['http_output'] == 'pass')
                return $buffer;
-       return mb_convert_encoding($buffer, $ini_file['http_output'], mb_internal_encoding());
+       return mb_convert_encoding($buffer, $mbemu_internals['ini_file']['http_output'], mb_internal_encoding());
 }
 
 
@@ -1546,6 +1561,110 @@ function mb_decode_numericentity ($str, $convmap, $encoding="")
        return $s;
 }
 
+function mb_strtoupper($str, $encoding='')
+{
+       global $mbemu_internals;
+
+       include_once(dirname(__FILE__).'/upper.table');
+       $encoding = mb_detect_encoding($str, $encoding);
+       $str = mb_convert_encoding($str, 'UTF-8', $encoding);
+
+       $max = preg_match_all('/'.$mbemu_internals['regex'][4].'/', $str, $allchars);  // make array of chars
+       $newst = '';
+       for ($i = 0; $i < $max; ++$i) {
+               $val = _utf8ucs2($allchars[0][$i]); //get ucs2 value
+               if ((0x61 <= $val) && ($val <= 0x7a)) {
+                       $val -= 0x20;
+                       $newst .= _ucs2utf8($val);
+               } elseif ($upper = $mbemu_internals['upperarray'][$val]) {
+                       $newst .= _ucs2utf8($upper);
+               } else {
+                       $newst .= $allchars[0][$i];
+               }
+       }
+       return mb_convert_encoding($newst, $encoding, 'UTF-8');
+}
+
+function mb_strtolower($str, $encoding='')
+{
+       global $mbemu_internals;
+
+       include_once(dirname(__FILE__).'/lower.table');
+       $encoding = mb_detect_encoding($str, $encoding);
+       $str = mb_convert_encoding($str, 'UTF-8', $encoding);
+
+       $max = preg_match_all('/'.$mbemu_internals['regex'][4].'/', $str, $allchars);  // make array of chars
+       $newst = '';
+       for ($i = 0; $i < $max; ++$i) {
+               $val = _utf8ucs2($allchars[0][$i]); //get ucs2 value
+               if ((0x41 <= $val) && ($val <= 0x5a)) {
+                       $val += 0x20;
+                       $newst .= _ucs2utf8($val);
+               } elseif ($lower = $mbemu_internals['lowerarray'][$val]) {
+                       $newst .= _ucs2utf8($lower);
+               } else {
+                       $newst .= $allchars[0][$i];
+               }
+       }
+       return mb_convert_encoding($newst, $encoding, 'UTF-8');
+}
+
+function mb_convert_case($str, $case, $encoding='')
+{
+       global $mbemu_internals;
+       
+       switch($case) {
+               case MB_CASE_UPPER :
+                       return mb_strtoupper($str, $encoding);
+               case MB_CASE_LOWER :
+                       return mb_strtolower($str, $encoding);
+               case MB_CASE_TITLE :
+                       include_once(dirname(__FILE__).'/upper.table');
+                       include_once(dirname(__FILE__).'/lower.table');
+                       $encoding = mb_detect_encoding($str, $encoding);
+                       $str = mb_convert_encoding($str, 'UTF-8', $encoding);
+
+                       $max = preg_match_all('/'.$mbemu_internals['regex'][4].'/', $str, $allchars);  // make array of chars
+                       $newst = '';
+                       $isalpha = FALSE;
+                       for ($i = 0; $i < $max; ++$i) {
+                               $val = _utf8ucs2($allchars[0][$i]); //get ucs2 value
+                               if ((0x41 <= $val) && ($val <= 0x5a)) {
+                                       if ($isalpha) {
+                                               $val += 0x20; // to lower;
+                                       } else {
+                                               $isalpha = TRUE;
+                                       }
+                                       $newst .= _ucs2utf8($val);
+                               } elseif ((0x61 <= $val) && ($val <= 0x7a)){
+                                       if (!$isalpha) {
+                                               $val -= 0x20; // to upper
+                                               $isalpha = TRUE;
+                                       }
+                                       $newst .= _ucs2utf8($val);
+                               } elseif ($upper = $mbemu_internals['upperarray'][$val]) { // this char is lower
+                                       if ($isalpha) {
+                                               $newst .= _ucs2utf8($val);
+                                       } else {
+                                               $isalpha = TRUE;
+                                               $newst .= _ucs2utf8($upper);
+                                       }
+                               } elseif ($lower = $mbemu_internals['lowerarray'][$val]) { // this char is upper
+                                       if ($isalpha) {
+                                               $newst .= _ucs2utf8($lower);
+                                       } else {
+                                               $isalpha = TRUE;
+                                               $newst .= _ucs2utf8($val);
+                                       }
+                               } else {
+                                       $isalpha = FALSE;
+                                       $newst .= $allchars[0][$i];
+                               }
+                       }
+                       return mb_convert_encoding($newst, $encoding, 'UTF-8');
+       }
+}
+
 
 function _print_str($str) {
        $all = unpack("C*", $str);
index 70cb336..149ff6a 100755 (executable)
@@ -1,5 +1,5 @@
 <?php
-$sjistoucs2 = array (
+$mbemu_internals['sjistoucs2'] = array (
 0x8140=>0x3000,
 0x8141=>0x3001,
 0x8142=>0x3002,
index 6e0e043..43b765b 100755 (executable)
@@ -1,5 +1,5 @@
 <?php
-$ucs2tosjis = array(
+$mbemu_internals['ucs2tosjis'] = array(
 0x3000=>0x8140,
 0x3001=>0x8141,
 0x3002=>0x8142,
diff --git a/nucleus/libs/mb_emulator/upper.table b/nucleus/libs/mb_emulator/upper.table
new file mode 100644 (file)
index 0000000..6c9339a
--- /dev/null
@@ -0,0 +1,651 @@
+<?php
+$mbemu_internals['upperarray'] = array (
+0x00B5 => 0x039C,
+0x00E0 => 0x00C0,
+0x00E1 => 0x00C1,
+0x00E2 => 0x00C2,
+0x00E3 => 0x00C3,
+0x00E4 => 0x00C4,
+0x00E5 => 0x00C5,
+0x00E6 => 0x00C6,
+0x00E7 => 0x00C7,
+0x00E8 => 0x00C8,
+0x00E9 => 0x00C9,
+0x00EA => 0x00CA,
+0x00EB => 0x00CB,
+0x00EC => 0x00CC,
+0x00ED => 0x00CD,
+0x00EE => 0x00CE,
+0x00EF => 0x00CF,
+0x00F0 => 0x00D0,
+0x00F1 => 0x00D1,
+0x00F2 => 0x00D2,
+0x00F3 => 0x00D3,
+0x00F4 => 0x00D4,
+0x00F5 => 0x00D5,
+0x00F6 => 0x00D6,
+0x00F8 => 0x00D8,
+0x00F9 => 0x00D9,
+0x00FA => 0x00DA,
+0x00FB => 0x00DB,
+0x00FC => 0x00DC,
+0x00FD => 0x00DD,
+0x00FE => 0x00DE,
+0x00FF => 0x0178,
+0x0101 => 0x0100,
+0x0103 => 0x0102,
+0x0105 => 0x0104,
+0x0107 => 0x0106,
+0x0109 => 0x0108,
+0x010B => 0x010A,
+0x010D => 0x010C,
+0x010F => 0x010E,
+0x0111 => 0x0110,
+0x0113 => 0x0112,
+0x0115 => 0x0114,
+0x0117 => 0x0116,
+0x0119 => 0x0118,
+0x011B => 0x011A,
+0x011D => 0x011C,
+0x011F => 0x011E,
+0x0121 => 0x0120,
+0x0123 => 0x0122,
+0x0125 => 0x0124,
+0x0127 => 0x0126,
+0x0129 => 0x0128,
+0x012B => 0x012A,
+0x012D => 0x012C,
+0x012F => 0x012E,
+0x0131 => 0x0049,
+0x0133 => 0x0132,
+0x0135 => 0x0134,
+0x0137 => 0x0136,
+0x013A => 0x0139,
+0x013C => 0x013B,
+0x013E => 0x013D,
+0x0140 => 0x013F,
+0x0142 => 0x0141,
+0x0144 => 0x0143,
+0x0146 => 0x0145,
+0x0148 => 0x0147,
+0x014B => 0x014A,
+0x014D => 0x014C,
+0x014F => 0x014E,
+0x0151 => 0x0150,
+0x0153 => 0x0152,
+0x0155 => 0x0154,
+0x0157 => 0x0156,
+0x0159 => 0x0158,
+0x015B => 0x015A,
+0x015D => 0x015C,
+0x015F => 0x015E,
+0x0161 => 0x0160,
+0x0163 => 0x0162,
+0x0165 => 0x0164,
+0x0167 => 0x0166,
+0x0169 => 0x0168,
+0x016B => 0x016A,
+0x016D => 0x016C,
+0x016F => 0x016E,
+0x0171 => 0x0170,
+0x0173 => 0x0172,
+0x0175 => 0x0174,
+0x0177 => 0x0176,
+0x017A => 0x0179,
+0x017C => 0x017B,
+0x017E => 0x017D,
+0x017F => 0x0053,
+0x0183 => 0x0182,
+0x0185 => 0x0184,
+0x0188 => 0x0187,
+0x018C => 0x018B,
+0x0192 => 0x0191,
+0x0195 => 0x01F6,
+0x0199 => 0x0198,
+0x019E => 0x0220,
+0x01A1 => 0x01A0,
+0x01A3 => 0x01A2,
+0x01A5 => 0x01A4,
+0x01A8 => 0x01A7,
+0x01AD => 0x01AC,
+0x01B0 => 0x01AF,
+0x01B4 => 0x01B3,
+0x01B6 => 0x01B5,
+0x01B9 => 0x01B8,
+0x01BD => 0x01BC,
+0x01BF => 0x01F7,
+0x01C6 => 0x01C5,
+0x01C9 => 0x01C8,
+0x01CC => 0x01CB,
+0x01CE => 0x01CD,
+0x01D0 => 0x01CF,
+0x01D2 => 0x01D1,
+0x01D4 => 0x01D3,
+0x01D6 => 0x01D5,
+0x01D8 => 0x01D7,
+0x01DA => 0x01D9,
+0x01DC => 0x01DB,
+0x01DD => 0x018E,
+0x01DF => 0x01DE,
+0x01E1 => 0x01E0,
+0x01E3 => 0x01E2,
+0x01E5 => 0x01E4,
+0x01E7 => 0x01E6,
+0x01E9 => 0x01E8,
+0x01EB => 0x01EA,
+0x01ED => 0x01EC,
+0x01EF => 0x01EE,
+0x01F3 => 0x01F2,
+0x01F5 => 0x01F4,
+0x01F9 => 0x01F8,
+0x01FB => 0x01FA,
+0x01FD => 0x01FC,
+0x01FF => 0x01FE,
+0x0201 => 0x0200,
+0x0203 => 0x0202,
+0x0205 => 0x0204,
+0x0207 => 0x0206,
+0x0209 => 0x0208,
+0x020B => 0x020A,
+0x020D => 0x020C,
+0x020F => 0x020E,
+0x0211 => 0x0210,
+0x0213 => 0x0212,
+0x0215 => 0x0214,
+0x0217 => 0x0216,
+0x0219 => 0x0218,
+0x021B => 0x021A,
+0x021D => 0x021C,
+0x021F => 0x021E,
+0x0223 => 0x0222,
+0x0225 => 0x0224,
+0x0227 => 0x0226,
+0x0229 => 0x0228,
+0x022B => 0x022A,
+0x022D => 0x022C,
+0x022F => 0x022E,
+0x0231 => 0x0230,
+0x0233 => 0x0232,
+0x0253 => 0x0181,
+0x0254 => 0x0186,
+0x0256 => 0x0189,
+0x0257 => 0x018A,
+0x0259 => 0x018F,
+0x025B => 0x0190,
+0x0260 => 0x0193,
+0x0263 => 0x0194,
+0x0268 => 0x0197,
+0x0269 => 0x0196,
+0x026F => 0x019C,
+0x0272 => 0x019D,
+0x0275 => 0x019F,
+0x0280 => 0x01A6,
+0x0283 => 0x01A9,
+0x0288 => 0x01AE,
+0x028A => 0x01B1,
+0x028B => 0x01B2,
+0x0292 => 0x01B7,
+0x03AC => 0x0386,
+0x03AD => 0x0388,
+0x03AE => 0x0389,
+0x03AF => 0x038A,
+0x03B1 => 0x0391,
+0x03B2 => 0x0392,
+0x03B3 => 0x0393,
+0x03B4 => 0x0394,
+0x03B5 => 0x0395,
+0x03B6 => 0x0396,
+0x03B7 => 0x0397,
+0x03B8 => 0x0398,
+0x03B9 => 0x0399,
+0x03BA => 0x039A,
+0x03BB => 0x039B,
+0x03BC => 0x039C,
+0x03BD => 0x039D,
+0x03BE => 0x039E,
+0x03BF => 0x039F,
+0x03C0 => 0x03A0,
+0x03C1 => 0x03A1,
+0x03C2 => 0x03A3,
+0x03C3 => 0x03A3,
+0x03C4 => 0x03A4,
+0x03C5 => 0x03A5,
+0x03C6 => 0x03A6,
+0x03C7 => 0x03A7,
+0x03C8 => 0x03A8,
+0x03C9 => 0x03A9,
+0x03CA => 0x03AA,
+0x03CB => 0x03AB,
+0x03CC => 0x038C,
+0x03CD => 0x038E,
+0x03CE => 0x038F,
+0x03D0 => 0x0392,
+0x03D1 => 0x0398,
+0x03D5 => 0x03A6,
+0x03D6 => 0x03A0,
+0x03D9 => 0x03D8,
+0x03DB => 0x03DA,
+0x03DD => 0x03DC,
+0x03DF => 0x03DE,
+0x03E1 => 0x03E0,
+0x03E3 => 0x03E2,
+0x03E5 => 0x03E4,
+0x03E7 => 0x03E6,
+0x03E9 => 0x03E8,
+0x03EB => 0x03EA,
+0x03ED => 0x03EC,
+0x03EF => 0x03EE,
+0x03F0 => 0x039A,
+0x03F1 => 0x03A1,
+0x03F2 => 0x03A3,
+0x03F5 => 0x0395,
+0x0430 => 0x0410,
+0x0431 => 0x0411,
+0x0432 => 0x0412,
+0x0433 => 0x0413,
+0x0434 => 0x0414,
+0x0435 => 0x0415,
+0x0436 => 0x0416,
+0x0437 => 0x0417,
+0x0438 => 0x0418,
+0x0439 => 0x0419,
+0x043A => 0x041A,
+0x043B => 0x041B,
+0x043C => 0x041C,
+0x043D => 0x041D,
+0x043E => 0x041E,
+0x043F => 0x041F,
+0x0440 => 0x0420,
+0x0441 => 0x0421,
+0x0442 => 0x0422,
+0x0443 => 0x0423,
+0x0444 => 0x0424,
+0x0445 => 0x0425,
+0x0446 => 0x0426,
+0x0447 => 0x0427,
+0x0448 => 0x0428,
+0x0449 => 0x0429,
+0x044A => 0x042A,
+0x044B => 0x042B,
+0x044C => 0x042C,
+0x044D => 0x042D,
+0x044E => 0x042E,
+0x044F => 0x042F,
+0x0450 => 0x0400,
+0x0451 => 0x0401,
+0x0452 => 0x0402,
+0x0453 => 0x0403,
+0x0454 => 0x0404,
+0x0455 => 0x0405,
+0x0456 => 0x0406,
+0x0457 => 0x0407,
+0x0458 => 0x0408,
+0x0459 => 0x0409,
+0x045A => 0x040A,
+0x045B => 0x040B,
+0x045C => 0x040C,
+0x045D => 0x040D,
+0x045E => 0x040E,
+0x045F => 0x040F,
+0x0461 => 0x0460,
+0x0463 => 0x0462,
+0x0465 => 0x0464,
+0x0467 => 0x0466,
+0x0469 => 0x0468,
+0x046B => 0x046A,
+0x046D => 0x046C,
+0x046F => 0x046E,
+0x0471 => 0x0470,
+0x0473 => 0x0472,
+0x0475 => 0x0474,
+0x0477 => 0x0476,
+0x0479 => 0x0478,
+0x047B => 0x047A,
+0x047D => 0x047C,
+0x047F => 0x047E,
+0x0481 => 0x0480,
+0x048B => 0x048A,
+0x048D => 0x048C,
+0x048F => 0x048E,
+0x0491 => 0x0490,
+0x0493 => 0x0492,
+0x0495 => 0x0494,
+0x0497 => 0x0496,
+0x0499 => 0x0498,
+0x049B => 0x049A,
+0x049D => 0x049C,
+0x049F => 0x049E,
+0x04A1 => 0x04A0,
+0x04A3 => 0x04A2,
+0x04A5 => 0x04A4,
+0x04A7 => 0x04A6,
+0x04A9 => 0x04A8,
+0x04AB => 0x04AA,
+0x04AD => 0x04AC,
+0x04AF => 0x04AE,
+0x04B1 => 0x04B0,
+0x04B3 => 0x04B2,
+0x04B5 => 0x04B4,
+0x04B7 => 0x04B6,
+0x04B9 => 0x04B8,
+0x04BB => 0x04BA,
+0x04BD => 0x04BC,
+0x04BF => 0x04BE,
+0x04C2 => 0x04C1,
+0x04C4 => 0x04C3,
+0x04C6 => 0x04C5,
+0x04C8 => 0x04C7,
+0x04CA => 0x04C9,
+0x04CC => 0x04CB,
+0x04CE => 0x04CD,
+0x04D1 => 0x04D0,
+0x04D3 => 0x04D2,
+0x04D5 => 0x04D4,
+0x04D7 => 0x04D6,
+0x04D9 => 0x04D8,
+0x04DB => 0x04DA,
+0x04DD => 0x04DC,
+0x04DF => 0x04DE,
+0x04E1 => 0x04E0,
+0x04E3 => 0x04E2,
+0x04E5 => 0x04E4,
+0x04E7 => 0x04E6,
+0x04E9 => 0x04E8,
+0x04EB => 0x04EA,
+0x04ED => 0x04EC,
+0x04EF => 0x04EE,
+0x04F1 => 0x04F0,
+0x04F3 => 0x04F2,
+0x04F5 => 0x04F4,
+0x04F9 => 0x04F8,
+0x0501 => 0x0500,
+0x0503 => 0x0502,
+0x0505 => 0x0504,
+0x0507 => 0x0506,
+0x0509 => 0x0508,
+0x050B => 0x050A,
+0x050D => 0x050C,
+0x050F => 0x050E,
+0x0561 => 0x0531,
+0x0562 => 0x0532,
+0x0563 => 0x0533,
+0x0564 => 0x0534,
+0x0565 => 0x0535,
+0x0566 => 0x0536,
+0x0567 => 0x0537,
+0x0568 => 0x0538,
+0x0569 => 0x0539,
+0x056A => 0x053A,
+0x056B => 0x053B,
+0x056C => 0x053C,
+0x056D => 0x053D,
+0x056E => 0x053E,
+0x056F => 0x053F,
+0x0570 => 0x0540,
+0x0571 => 0x0541,
+0x0572 => 0x0542,
+0x0573 => 0x0543,
+0x0574 => 0x0544,
+0x0575 => 0x0545,
+0x0576 => 0x0546,
+0x0577 => 0x0547,
+0x0578 => 0x0548,
+0x0579 => 0x0549,
+0x057A => 0x054A,
+0x057B => 0x054B,
+0x057C => 0x054C,
+0x057D => 0x054D,
+0x057E => 0x054E,
+0x057F => 0x054F,
+0x0580 => 0x0550,
+0x0581 => 0x0551,
+0x0582 => 0x0552,
+0x0583 => 0x0553,
+0x0584 => 0x0554,
+0x0585 => 0x0555,
+0x0586 => 0x0556,
+0x1E01 => 0x1E00,
+0x1E03 => 0x1E02,
+0x1E05 => 0x1E04,
+0x1E07 => 0x1E06,
+0x1E09 => 0x1E08,
+0x1E0B => 0x1E0A,
+0x1E0D => 0x1E0C,
+0x1E0F => 0x1E0E,
+0x1E11 => 0x1E10,
+0x1E13 => 0x1E12,
+0x1E15 => 0x1E14,
+0x1E17 => 0x1E16,
+0x1E19 => 0x1E18,
+0x1E1B => 0x1E1A,
+0x1E1D => 0x1E1C,
+0x1E1F => 0x1E1E,
+0x1E21 => 0x1E20,
+0x1E23 => 0x1E22,
+0x1E25 => 0x1E24,
+0x1E27 => 0x1E26,
+0x1E29 => 0x1E28,
+0x1E2B => 0x1E2A,
+0x1E2D => 0x1E2C,
+0x1E2F => 0x1E2E,
+0x1E31 => 0x1E30,
+0x1E33 => 0x1E32,
+0x1E35 => 0x1E34,
+0x1E37 => 0x1E36,
+0x1E39 => 0x1E38,
+0x1E3B => 0x1E3A,
+0x1E3D => 0x1E3C,
+0x1E3F => 0x1E3E,
+0x1E41 => 0x1E40,
+0x1E43 => 0x1E42,
+0x1E45 => 0x1E44,
+0x1E47 => 0x1E46,
+0x1E49 => 0x1E48,
+0x1E4B => 0x1E4A,
+0x1E4D => 0x1E4C,
+0x1E4F => 0x1E4E,
+0x1E51 => 0x1E50,
+0x1E53 => 0x1E52,
+0x1E55 => 0x1E54,
+0x1E57 => 0x1E56,
+0x1E59 => 0x1E58,
+0x1E5B => 0x1E5A,
+0x1E5D => 0x1E5C,
+0x1E5F => 0x1E5E,
+0x1E61 => 0x1E60,
+0x1E63 => 0x1E62,
+0x1E65 => 0x1E64,
+0x1E67 => 0x1E66,
+0x1E69 => 0x1E68,
+0x1E6B => 0x1E6A,
+0x1E6D => 0x1E6C,
+0x1E6F => 0x1E6E,
+0x1E71 => 0x1E70,
+0x1E73 => 0x1E72,
+0x1E75 => 0x1E74,
+0x1E77 => 0x1E76,
+0x1E79 => 0x1E78,
+0x1E7B => 0x1E7A,
+0x1E7D => 0x1E7C,
+0x1E7F => 0x1E7E,
+0x1E81 => 0x1E80,
+0x1E83 => 0x1E82,
+0x1E85 => 0x1E84,
+0x1E87 => 0x1E86,
+0x1E89 => 0x1E88,
+0x1E8B => 0x1E8A,
+0x1E8D => 0x1E8C,
+0x1E8F => 0x1E8E,
+0x1E91 => 0x1E90,
+0x1E93 => 0x1E92,
+0x1E95 => 0x1E94,
+0x1E9B => 0x1E60,
+0x1EA1 => 0x1EA0,
+0x1EA3 => 0x1EA2,
+0x1EA5 => 0x1EA4,
+0x1EA7 => 0x1EA6,
+0x1EA9 => 0x1EA8,
+0x1EAB => 0x1EAA,
+0x1EAD => 0x1EAC,
+0x1EAF => 0x1EAE,
+0x1EB1 => 0x1EB0,
+0x1EB3 => 0x1EB2,
+0x1EB5 => 0x1EB4,
+0x1EB7 => 0x1EB6,
+0x1EB9 => 0x1EB8,
+0x1EBB => 0x1EBA,
+0x1EBD => 0x1EBC,
+0x1EBF => 0x1EBE,
+0x1EC1 => 0x1EC0,
+0x1EC3 => 0x1EC2,
+0x1EC5 => 0x1EC4,
+0x1EC7 => 0x1EC6,
+0x1EC9 => 0x1EC8,
+0x1ECB => 0x1ECA,
+0x1ECD => 0x1ECC,
+0x1ECF => 0x1ECE,
+0x1ED1 => 0x1ED0,
+0x1ED3 => 0x1ED2,
+0x1ED5 => 0x1ED4,
+0x1ED7 => 0x1ED6,
+0x1ED9 => 0x1ED8,
+0x1EDB => 0x1EDA,
+0x1EDD => 0x1EDC,
+0x1EDF => 0x1EDE,
+0x1EE1 => 0x1EE0,
+0x1EE3 => 0x1EE2,
+0x1EE5 => 0x1EE4,
+0x1EE7 => 0x1EE6,
+0x1EE9 => 0x1EE8,
+0x1EEB => 0x1EEA,
+0x1EED => 0x1EEC,
+0x1EEF => 0x1EEE,
+0x1EF1 => 0x1EF0,
+0x1EF3 => 0x1EF2,
+0x1EF5 => 0x1EF4,
+0x1EF7 => 0x1EF6,
+0x1EF9 => 0x1EF8,
+0x1F00 => 0x1F08,
+0x1F01 => 0x1F09,
+0x1F02 => 0x1F0A,
+0x1F03 => 0x1F0B,
+0x1F04 => 0x1F0C,
+0x1F05 => 0x1F0D,
+0x1F06 => 0x1F0E,
+0x1F07 => 0x1F0F,
+0x1F10 => 0x1F18,
+0x1F11 => 0x1F19,
+0x1F12 => 0x1F1A,
+0x1F13 => 0x1F1B,
+0x1F14 => 0x1F1C,
+0x1F15 => 0x1F1D,
+0x1F20 => 0x1F28,
+0x1F21 => 0x1F29,
+0x1F22 => 0x1F2A,
+0x1F23 => 0x1F2B,
+0x1F24 => 0x1F2C,
+0x1F25 => 0x1F2D,
+0x1F26 => 0x1F2E,
+0x1F27 => 0x1F2F,
+0x1F30 => 0x1F38,
+0x1F31 => 0x1F39,
+0x1F32 => 0x1F3A,
+0x1F33 => 0x1F3B,
+0x1F34 => 0x1F3C,
+0x1F35 => 0x1F3D,
+0x1F36 => 0x1F3E,
+0x1F37 => 0x1F3F,
+0x1F40 => 0x1F48,
+0x1F41 => 0x1F49,
+0x1F42 => 0x1F4A,
+0x1F43 => 0x1F4B,
+0x1F44 => 0x1F4C,
+0x1F45 => 0x1F4D,
+0x1F51 => 0x1F59,
+0x1F53 => 0x1F5B,
+0x1F55 => 0x1F5D,
+0x1F57 => 0x1F5F,
+0x1F60 => 0x1F68,
+0x1F61 => 0x1F69,
+0x1F62 => 0x1F6A,
+0x1F63 => 0x1F6B,
+0x1F64 => 0x1F6C,
+0x1F65 => 0x1F6D,
+0x1F66 => 0x1F6E,
+0x1F67 => 0x1F6F,
+0x1F70 => 0x1FBA,
+0x1F71 => 0x1FBB,
+0x1F72 => 0x1FC8,
+0x1F73 => 0x1FC9,
+0x1F74 => 0x1FCA,
+0x1F75 => 0x1FCB,
+0x1F76 => 0x1FDA,
+0x1F77 => 0x1FDB,
+0x1F78 => 0x1FF8,
+0x1F79 => 0x1FF9,
+0x1F7A => 0x1FEA,
+0x1F7B => 0x1FEB,
+0x1F7C => 0x1FFA,
+0x1F7D => 0x1FFB,
+0x1F80 => 0x1F88,
+0x1F81 => 0x1F89,
+0x1F82 => 0x1F8A,
+0x1F83 => 0x1F8B,
+0x1F84 => 0x1F8C,
+0x1F85 => 0x1F8D,
+0x1F86 => 0x1F8E,
+0x1F87 => 0x1F8F,
+0x1F90 => 0x1F98,
+0x1F91 => 0x1F99,
+0x1F92 => 0x1F9A,
+0x1F93 => 0x1F9B,
+0x1F94 => 0x1F9C,
+0x1F95 => 0x1F9D,
+0x1F96 => 0x1F9E,
+0x1F97 => 0x1F9F,
+0x1FA0 => 0x1FA8,
+0x1FA1 => 0x1FA9,
+0x1FA2 => 0x1FAA,
+0x1FA3 => 0x1FAB,
+0x1FA4 => 0x1FAC,
+0x1FA5 => 0x1FAD,
+0x1FA6 => 0x1FAE,
+0x1FA7 => 0x1FAF,
+0x1FB0 => 0x1FB8,
+0x1FB1 => 0x1FB9,
+0x1FB3 => 0x1FBC,
+0x1FBE => 0x0399,
+0x1FC3 => 0x1FCC,
+0x1FD0 => 0x1FD8,
+0x1FD1 => 0x1FD9,
+0x1FE0 => 0x1FE8,
+0x1FE1 => 0x1FE9,
+0x1FE5 => 0x1FEC,
+0x1FF3 => 0x1FFC,
+0xFF41 => 0xFF21,
+0xFF42 => 0xFF22,
+0xFF43 => 0xFF23,
+0xFF44 => 0xFF24,
+0xFF45 => 0xFF25,
+0xFF46 => 0xFF26,
+0xFF47 => 0xFF27,
+0xFF48 => 0xFF28,
+0xFF49 => 0xFF29,
+0xFF4A => 0xFF2A,
+0xFF4B => 0xFF2B,
+0xFF4C => 0xFF2C,
+0xFF4D => 0xFF2D,
+0xFF4E => 0xFF2E,
+0xFF4F => 0xFF2F,
+0xFF50 => 0xFF30,
+0xFF51 => 0xFF31,
+0xFF52 => 0xFF32,
+0xFF53 => 0xFF33,
+0xFF54 => 0xFF34,
+0xFF55 => 0xFF35,
+0xFF56 => 0xFF36,
+0xFF57 => 0xFF37,
+0xFF58 => 0xFF38,
+0xFF59 => 0xFF39,
+0xFF5A => 0xFF3A);
+?>