2
////////////////////////////////
5
// Copied entirely from mini_jcode.phps by TOMO <groove@spencernetwork.org>
7
////////////////////////////////
9
function JcodeConvert(&$str, $from, $to)
16
if ($from == 0) $from = AutoDetect($str);
17
if ($from == 1 && $to == 2) return EUCtoSJIS($str);
18
if ($from == 1 && $to == 3) return EUCtoJIS($str);
19
if ($from == 2 && $to == 1) return SJIStoEUC($str);
20
if ($from == 2 && $to == 3) return SJIStoJIS($str);
21
if ($from == 3 && $to == 1) return JIStoEUC($str);
22
if ($from == 3 && $to == 2) return JIStoSJIS($str);
27
function AutoDetect(&$str)
36
if (Jcode_is_JIS($str)) return 3; //JIS
37
if (Jcode_is_ASCII($str)) return 0; //ASCII
39
$b = unpack("C*", $str);
41
if (Jcode_is_EUC($b)) return 1; //EUC
42
if (Jcode_is_SJIS($b)) return 2; //SJIS
47
function HANtoZEN(&$str, $encode)
54
if ($encode == 0) return $str;
55
if ($encode == 1) return HANtoZEN_EUC($str);
56
if ($encode == 2) return HANtoZEN_SJIS($str);
57
if ($encode == 3) return HANtoZEN_JIS($str);
62
function ZENtoHAN(&$str, $encode, $kana=1, $alph=1)
69
if ($encode == 0) return $str;
70
if ($encode == 1) return ZENtoHAN_EUC($str, $kana, $alph, $kana);
71
if ($encode == 2) return ZENtoHAN_SJIS($str, $kana, $alph, $kana);
72
if ($encode == 3) return ZENtoHAN_JIS($str, $kana, $alph, $kana);
78
function JIStoSJIS(&$str_JIS)
82
$b = unpack("C*", $str_JIS);
85
for ($i = 1; $i <= $n; $i++) {
86
//Check escape sequence
88
if (($b[$i+1] == 0x24 && $b[$i+2] == 0x42)
89
|| ($b[$i+1] == 0x24 && $b[$i+2] == 0x40)) {
91
} elseif (($b[$i+1] == 0x28 && $b[$i+2] == 0x49)) {
99
if (!isset($b[$i])) break;
107
if ($b1 < 0x2F) $b1 += 0x71; else $b1 -= 0x4F;
108
if ($b2 > 0x5F) $b2 += 0x20; else $b2 += 0x1F;
111
if ($b1 <= 0x2F) $b1 += 0x70; else $b1 -= 0x50;
114
$str_SJIS .= chr($b1).chr($b2);
116
} elseif ($mode == 2) {
117
$str_SJIS .= chr($b[$i] + 0x80);
119
$str_SJIS .= chr($b[$i]);
126
function JIStoEUC(&$str_JIS)
130
$b = unpack("C*", $str_JIS);
133
for ($i = 1; $i <= $n; $i++) {
134
//Check escape sequence
135
if ($b[$i] == 0x1B) {
136
if (($b[$i+1] == 0x24 && $b[$i+2] == 0x42)
137
|| ($b[$i+1] == 0x24 && $b[$i+2] == 0x40)) {
139
} elseif (($b[$i+1] == 0x28 && $b[$i+2] == 0x49)) {
147
if (!isset($b[$i])) break;
151
$str_EUC .= chr($b[$i] + 0x80).chr($b[$i+1] + 0x80);
153
} elseif ($mode == 2) {
154
$str_EUC .= chr(0x8E).chr($b[$i] + 0x80);
156
$str_EUC .= chr($b[$i]);
163
function SJIStoJIS(&$str_SJIS)
167
$b = unpack("C*", $str_SJIS);
170
$ESC = array(chr(0x1B).chr(0x28).chr(0x42),
171
chr(0x1B).chr(0x24).chr(0x42),
172
chr(0x1B).chr(0x28).chr(0x49));
174
for ($i = 1; $i <= $n; $i++) {
176
if (0xA1 <= $b1 && $b1 <= 0xDF) {
179
$str_JIS .= $ESC[$mode];
181
$str_JIS .= chr($b1 - 0x80);
182
} elseif ($b1 >= 0x80) {
185
$str_JIS .= $ESC[$mode];
190
if ($b1 < 0x13F) $b1 -= 0xE1; else $b1 -= 0x61;
191
if ($b2 > 0x7E) $b2 -= 0x20; else $b2 -= 0x1F;
193
if ($b1 < 0x13F) $b1 -= 0xE0; else $b1 -= 0x60;
196
$str_JIS .= chr($b1).chr($b2);
201
$str_JIS .= $ESC[$mode];
203
$str_JIS .= chr($b1);
206
if ($mode != 0) $str_JIS .= $ESC[0];
211
function SJIStoEUC(&$str_SJIS)
213
$b = unpack("C*", $str_SJIS);
217
for ($i = 1; $i <= $n; $i++) {
219
if (0xA1 <= $b1 && $b1 <= 0xDF) {
220
$str_EUC .= chr(0x8E).chr($b1);
221
} elseif ($b1 >= 0x81) {
225
if ($b1 < 0x13F) $b1 -= 0x61; else $b1 -= 0xE1;
226
if ($b2 > 0x7E) $b2 += 0x60; else $b2 += 0x61;
228
if ($b1 < 0x13F) $b1 -= 0x60; else $b1 -= 0xE0;
231
$str_EUC .= chr($b1).chr($b2);
234
$str_EUC .= chr($b1);
241
function EUCtoJIS(&$str_EUC)
245
$b = unpack("C*", $str_EUC);
248
$ESC = array(chr(0x1B).chr(0x28).chr(0x42),
249
chr(0x1B).chr(0x24).chr(0x42),
250
chr(0x1B).chr(0x28).chr(0x49));
252
for ($i = 1; $i <= $n; $i++) {
257
$str_JIS .= $ESC[$mode];
259
$str_JIS .= chr($b[$i+1] - 0x80);
261
} elseif ($b1 > 0x8E) {
264
$str_JIS .= $ESC[$mode];
266
$str_JIS .= chr($b1 - 0x80).chr($b[$i+1] - 0x80);
271
$str_JIS .= $ESC[$mode];
273
$str_JIS .= chr($b1);
276
if ($mode != 0) $str_JIS .= $ESC[0];
281
function EUCtoSJIS(&$str_EUC)
284
$b = unpack("C*", $str_EUC);
287
for ($i = 1; $i <= $n; $i++) {
290
$str_SJIS .= chr($b[$i+1]);
292
} elseif ($b1 >= 0x8E) {
296
if ($b1 < 0x6F) $b1 += 0x31; else $b1 += 0x71;
297
if ($b2 > 0xDF) $b2 -= 0x60; else $b2 -= 0x61;
300
if ($b1 <= 0x6F) $b1 += 0x30; else $b1 += 0x70;
303
$str_SJIS .= chr($b1).chr($b2);
306
$str_SJIS .= chr($b1);
313
function HANtoZEN_EUC(&$str_HAN)
315
$table_han2zen_euc = array(0xA1A3,0xA1D6,0xA1D7,0xA1A2,0xA1A6,0xA5F2,
316
0xA5A1,0xA5A3,0xA5A5,0xA5A7,0xA5A9,0xA5E3,0xA5E5,0xA5E7,0xA5C3,0xA1BC,
317
0xA5A2,0xA5A4,0xA5A6,0xA5A8,0xA5AA,0xA5AB,0xA5AD,0xA5AF,0xA5B1,0xA5B3,
318
0xA5B5,0xA5B7,0xA5B9,0xA5BB,0xA5BD,0xA5BF,0xA5C1,0xA5C4,0xA5C6,0xA5C8,
319
0xA5CA,0xA5CB,0xA5CC,0xA5CD,0xA5CE,0xA5CF,0xA5D2,0xA5D5,0xA5D8,0xA5DB,
320
0xA5DE,0xA5DF,0xA5E0,0xA5E1,0xA5E2,0xA5E4,0xA5E6,0xA5E8,0xA5E9,0xA5EA,
321
0xA5EB,0xA5EC,0xA5ED,0xA5EF,0xA5F3,0xA1AB,0xA1AC);
324
$b = unpack("C*", $str_HAN);
327
for ($i = 1; $i <= $n; $i++) {
330
$b2 = $b[$i+1] - 0xA1;
331
$c1 = ($table_han2zen_euc[$b2] & 0xFF00) >> 8;
332
$c2 = $table_han2zen_euc[$b2] & 0x00FF;
333
$str_ZEN .= chr($c1).chr($c2);
335
} elseif ($b1 >= 0xA1) {
336
$str_ZEN .= chr($b1).chr($b[$i+1]);
339
$str_ZEN .= chr($b1);
346
function HANtoZEN_SJIS(&$str_HAN)
348
$table_han2zen_sjis = array(0x8142,0x8175,0x8176,0x8141,0x8145,0x8392,
349
0x8340,0x8342,0x8344,0x8346,0x8348,0x8383,0x8385,0x8387,0x8362,0x815B,
350
0x8341,0x8343,0x8345,0x8347,0x8349,0x834A,0x834C,0x834E,0x8350,0x8352,
351
0x8354,0x8356,0x8358,0x835A,0x835C,0x835E,0x8360,0x8363,0x8365,0x8367,
352
0x8369,0x836A,0x836B,0x836C,0x836D,0x836E,0x8371,0x8374,0x8377,0x837A,
353
0x837D,0x837E,0x8380,0x8381,0x8382,0x8384,0x8386,0x8388,0x8389,0x838A,
354
0x838B,0x838C,0x838D,0x838F,0x8393,0x814A,0x814B);
357
$b = unpack("C*", $str_HAN);
360
for ($i = 1; $i <= $n; $i++) {
362
if (0xA1 <= $b1 && $b1 <= 0xDF) {
364
$c1 = ($table_han2zen_sjis[$b1] & 0xFF00) >> 8;
365
$c2 = $table_han2zen_sjis[$b1] & 0x00FF;
366
$str_ZEN .= chr($c1).chr($c2);
367
} elseif ($b1 >= 0x80) {
368
$str_ZEN .= chr($b1).chr($b[$i+1]);
371
$str_ZEN .= chr($b1);
378
function HANtoZEN_JIS(&$str_HAN)
380
$table_han2zen_jis = array(0x2123,0x2156,0x2157,0x2122,0x2126,0x2572,
381
0x2521,0x2523,0x2525,0x2527,0x2529,0x2563,0x2565,0x2567,0x2543,0x213C,
382
0x2522,0x2524,0x2526,0x2528,0x252A,0x252B,0x252D,0x252F,0x2531,0x2533,
383
0x2535,0x2537,0x2539,0x253B,0x253D,0x253F,0x2541,0x2544,0x2546,0x2548,
384
0x254A,0x254B,0x254C,0x254D,0x254E,0x254F,0x2552,0x2555,0x2558,0x255B,
385
0x255E,0x255F,0x2560,0x2561,0x2562,0x2564,0x2566,0x2568,0x2569,0x256A,
386
0x256B,0x256C,0x256D,0x256F,0x2573,0x212B,0x212C);
389
$b = unpack("C*", $str_HAN);
394
$ESC = array(chr(0x1B).chr(0x28).chr(0x42),
395
chr(0x1B).chr(0x24).chr(0x42),
396
chr(0x1B).chr(0x28).chr(0x49));
398
for ($i = 1; $i <= $n; $i++) {
400
if ($b[$i] == 0x1B) {
401
if (($b[$i+1] == 0x24 && $b[$i+2] == 0x42)
402
|| ($b[$i+1] == 0x24 && $b[$i+2] == 0x40)) {
404
} elseif ($b[$i+1] == 0x28 && $b[$i+2] == 0x49) {
412
if (!isset($b[$i])) break;
415
if ($new_mode != 1) $esc = TRUE;
418
$c1 = ($table_han2zen_jis[$c] & 0xFF00) >> 8;
419
$c2 = $table_han2zen_jis[$c] & 0x00FF;
420
$str = chr($c1).chr($c2);
422
if ($new_mode != $mode) $esc = TRUE;
427
if ($esc) { //add escape sequence
428
$str_ZEN .= $ESC[$new_mode];
434
if ($new_mode != 0) $str_ZEN .= $ESC[0];
439
function ZENtoHAN_EUC(&$str_ZEN, $kana = 1, $alph = 1, $sym = 1)
442
0x00A7,0x00B1,0x00A8,0x00B2,0x00A9,0x00B3,0x00AA,0x00B4,0x00AB,0x00B5,
443
0x00B6,0xB6DE,0x00B7,0xB7DE,0x00B8,0xB8DE,0x00B9,0xB9DE,0x00BA,0xBADE,
444
0x00BB,0xBBDE,0x00BC,0xBCDE,0x00BD,0xBDDE,0x00BE,0xBEDE,0x00BF,0xBFDE,
445
0x00C0,0xC0DE,0x00C1,0xC1DE,0x00AF,0x00C2,0xC2DE,0x00C3,0xC3DE,0x00C4,
446
0xC4DE,0x00C5,0x00C6,0x00C7,0x00C8,0x00C9,0x00CA,0xCADE,0xCADF,0x00CB,
447
0xCBDE,0xCBDF,0x00CC,0xCCDE,0xCCDF,0x00CD,0xCDDE,0xCDDF,0x00CE,0xCEDE,
448
0xCEDF,0x00CF,0x00D0,0x00D1,0x00D2,0x00D3,0x00AC,0x00D4,0x00AD,0x00D5,
449
0x00AE,0x00D6,0x00D7,0x00D8,0x00D9,0x00DA,0x00DB,0x0000,0x00DC,0x0000,
450
0x0000,0x00A6,0x00DD,0xB3DE,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
451
0x0000,0x0000,0x0000,0x0000,0x0000
455
0x0020,0x8EA4,0x8EA1,0x0000,0x0000,0x8EA5,0x0000,0x0000,0x0000,0x0000,
456
0x8EDE,0x8EDF,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
457
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8EB0,0x0000,0x0000,
458
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
459
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
460
0x0000,0x0000,0x0000,0x8EA2,0x8EA3,0x0000,0x0000,0x0000,0x0000,0x0000,
461
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
462
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
463
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
464
0x0000,0x0000,0x0000,0x0000,0x0000
468
$b = unpack("C*", $str_ZEN);
471
for ($i = 1; $i <= $n; $i++) {
474
if ($kana == 1 && $b1 == 0xA5) { // Katakana
475
$c = $b[$i+1] - 0xA1;
476
$c1 = ($kana_euc[$c] & 0xFF00) >> 8;
477
$c2 = $kana_euc[$c] & 0x00FF;
480
$str_HAN .= chr($b1).chr($b[$i+1]);
482
$str_HAN .= chr(0x8E).chr($c2);
485
$str_HAN .= chr(0x8E).chr($c1).chr(0x8E).chr($c2);
487
} elseif ($sym == 1 && $b1 == 0xA1) { // Symbol
488
$c = $b[$i+1] - 0xA1;
489
$c1 = ($sym_euc[$c] & 0xFF00) >> 8;
490
$c2 = $sym_euc[$c] & 0x00FF;
493
$str_HAN .= chr($b1).chr($b[$i+1]);
495
$str_HAN .= chr($c2);
498
$str_HAN .= chr($c1).chr($c2);
500
} elseif ( $alph == 1 && $b1 == 0xA3 ) { // Alphabet & Number
501
$str_HAN .= chr($b[$i+1] - 0x80);
502
} else { // Rest of Zenkaku
503
$str_HAN .= chr($b1).chr($b[$i+1]);
507
$str_HAN .= chr($b1);
514
function ZENtoHAN_SJIS(&$str_ZEN, $kana = 1, $alph = 1, $sym = 1)
517
0x00A7,0x00B1,0x00A8,0x00B2,0x00A9,0x00B3,0x00AA,0x00B4,0x00AB,0x00B5,
518
0x00B6,0xB6DE,0x00B7,0xB7DE,0x00B8,0xB8DE,0x00B9,0xB9DE,0x00BA,0xBADE,
519
0x00BB,0xBBDE,0x00BC,0xBCDE,0x00BD,0xBDDE,0x00BE,0xBEDE,0x00BF,0xBFDE,
520
0x00C0,0xC0DE,0x00C1,0xC1DE,0x00AF,0x00C2,0xC2DE,0x00C3,0xC3DE,0x00C4,
521
0xC4DE,0x00C5,0x00C6,0x00C7,0x00C8,0x00C9,0x00CA,0xCADE,0xCADF,0x00CB,
522
0xCBDE,0xCBDF,0x00CC,0xCCDE,0xCCDF,0x00CD,0xCDDE,0xCDDF,0x00CE,0xCEDE,
523
0xCEDF,0x00CF,0x00D0,0x0000,0x00D1,0x00D2,0x00D3,0x00AC,0x00D4,0x00AD,
524
0x00D5,0x00AE,0x00D6,0x00D7,0x00D8,0x00D9,0x00DA,0x00DB,0x0000,0x00DC,
525
0x0000,0x0000,0x00A6,0x00DD,0xB3DE,0x0000,0x0000,0x0000,0x0000,0x0000,
526
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
530
0x20,0xA4,0xA1,0x00,0x00,0xA5,0x00,0x00,0x00,0x00,0xDE,0xDF,0x00,0x00,
531
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,
532
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
533
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA2,0xA3,0x00,
534
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
535
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
536
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
540
$b = unpack("C*", $str_ZEN);
543
for ($i = 1; $i <= $n; $i++) {
547
if ($kana == 1 && $b1 == 0x83 // Katakana
548
&& (0x3F < $b2 && $b2 < 0x9F)) {
550
$c1 = ($kana_sjis[$c] & 0xFF00) >> 8;
551
$c2 = $kana_sjis[$c] & 0x00FF;
554
$str_HAN .= chr($b1).chr($b2);
556
$str_HAN .= chr($c2);
559
$str_HAN .= chr($c1).chr($c2);
561
} elseif ($sym == 1 && $b1 == 0x81 // Symbol
562
&& (0x3F < $b2 && $b2 < 0x9F)) {
563
$c1 = $sym_sjis[ $b2 - 0x40 ];
565
$str_HAN .= chr($b1).chr($b2);
567
$str_HAN .= chr($c1);
569
} elseif ($alph == 1 && $b1 == 0x82 // Alphabet & Number
570
&& (0x3F < $b2 && $b2 < 0x9F)) {
571
if ($b[$i+1] < 0x80) {
572
$str_HAN .= chr($b2 - 0x1F);
574
$str_HAN .= chr($b2 - 0x20);
576
} else { // Rest of Zenkaku
577
$str_HAN .= chr($b1).chr($b2);
581
$str_HAN .= chr($b1);
588
function ZENtoHAN_JIS(&$str_ZEN, $kana = 1, $alph = 1, $sym = 1)
591
0x0027,0x0031,0x0028,0x0032,0x0029,0x0033,0x002A,0x0034,0x002B,0x0035,
592
0x0036,0x365E,0x0037,0x375E,0x0038,0x385E,0x0039,0x395E,0x003A,0x3A5E,
593
0x003B,0x3B5E,0x003C,0x3C5E,0x003D,0x3D5E,0x003E,0x3E5E,0x003F,0x3F5E,
594
0x0040,0x405E,0x0041,0x415E,0x002F,0x0042,0x425E,0x0043,0x435E,0x0044,
595
0x445E,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x4A5E,0x4A5F,0x004B,
596
0x4B5E,0x4B5F,0x004C,0x4C5E,0x4C5F,0x004D,0x4D5E,0x4D5F,0x004E,0x4E5E,
597
0x4E5F,0x004F,0x0050,0x0051,0x0052,0x0053,0x002C,0x0054,0x002D,0x0055,
598
0x002E,0x0056,0x0057,0x0058,0x0059,0x005A,0x005B,0x0000,0x005C,0x0000,
599
0x0000,0x0026,0x005D,0x335E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
600
0x0000,0x0000,0x0000,0x0000,0x0000
604
0x0020,0xFF24,0xFF21,0x0000,0x0000,0xFF25,0x0000,0x0000,0x0000,0x0000,
605
0xFF5E,0xFF5F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
606
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xFF30,0x0000,0x0000,
607
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
608
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
609
0x0000,0x0000,0x0000,0xFF22,0xFF23,0x0000,0x0000,0x0000,0x0000,0x0000,
610
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
611
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
612
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
613
0x0000,0x0000,0x0000,0x0000,0x0000
617
$b = unpack("C*", $str_ZEN);
622
$ESC = array(chr(0x1B).chr(0x28).chr(0x42),
623
chr(0x1B).chr(0x24).chr(0x42),
624
chr(0x1B).chr(0x28).chr(0x49));
626
for ($i = 1; $i <= $n; $i++) {
627
if ($b[$i] == 0x1B) {
628
if (($b[$i+1] == 0x24 && $b[$i+2] == 0x42)
629
|| ($b[$i+1] == 0x24 && $b[$i+2] == 0x40)) {
631
} elseif ($b[$i+1] == 0x28 && $b[$i+2] == 0x49) {
639
if (!isset($b[$i])) break;
642
if ($mode == 1) { //Zenkaku
643
if ($alph == 1 && $b1 == 0x23) { //Alphabet & Number
644
if ($new_mode != 0) $esc = TRUE;
646
$str = chr($b[$i+1]);
647
} elseif ($sym == 1 && $b1 == 0x21) { //Symbol
648
$c = $b[$i+1] - 0x21;
649
$c1 = ($sym_jis[$c] & 0xFF00) >> 8;
650
$c2 = $sym_jis[$c] & 0x00FF;
653
if ($new_mode != 1) $esc = TRUE;
655
$str = chr($b1).chr($b[$i+1]);
657
if ($new_mode != 0) $esc = true;
662
if ($new_mode != 2) $esc = TRUE;
666
} elseif ($kana == 1 && $b1 == 0x25) { //Katakana
667
$c = $b[$i+1] - 0x21;
668
$c1 = ($kana_jis[$c] & 0xFF00) >> 8;
669
$c2 = $kana_jis[$c] & 0x00FF;
672
if ($new_mode != 1) $esc = TRUE;
674
$str = chr($b1).chr($b[$i+1]);
676
if ($new_mode != 2) $esc = TRUE;
681
if ($new_mode != 2) $esc = TRUE;
683
$str = chr($c1).chr($c2);
686
if ($new_mode != 1) $esc = TRUE;
688
$str = chr($b1).chr($b[$i+1]);
691
} elseif ($mode == 2) {
692
if ($new_mode != 2) $esc = TRUE;
696
if ($new_mode != 0) $esc = TRUE;
701
if ($esc) { //add escape sequense
702
$str_HAN .= $ESC[$new_mode];
708
if ($new_mode != 0) $str_HAN .= $ESC[0];
713
/*************************************************************************/
715
function Jcode_is_EUC(&$b)
718
for ($i = 1; $i <= $n; $i++) {
721
if (!isset($b[$i+1])) {
724
$b2 = $b[$i+1] - 0x80;
725
if ((0x20 > $b2) || ($b2 > 0x7F)) {
729
} elseif ($b1 > 0x8E) {
731
if ((0x20 > $b1) || ($b1 > 0x7F)) {
734
if (!isset($b[$i+1])) {
737
$b2 = $b[$i+1] - 0x80;
738
if ((0x20 > $b2) || ($b2 > 0x7F)) {
742
} elseif ($b1 <= 0x7F){
751
function Jcode_is_SJIS(&$b)
754
for ($i = 1; $i <= $n; $i++) {
756
if (0xA1 <= $b1 && $b1 <= 0xDF) {
758
if ((0x20 > $b1) || ($b1 > 0x7F)) {
761
} elseif ($b1 >= 0x80) {
765
if ($b1 < 0x13F) $b1 -= 0xE1; else $b1 -= 0x61;
766
if ($b2 > 0x7E) $b2 -= 0x20; else $b2 -= 0x1F;
768
if ($b1 < 0x13F) $b1 -= 0xE0; else $b1 -= 0x60;
771
if (((0x20 > $b1) || ($b1 > 0x7F))
772
|| ((0x20 > $b2) || ($b2 > 0x7F))) {
776
} elseif ($b1 <= 0x7F){
786
function Jcode_is_JIS(&$str)
788
return ereg("\x1B", $str);
791
function Jcode_is_ASCII(&$str)
793
return !ereg("[\x80-\xFF]", $str);
b'\\ No newline at end of file'