1 package com.ozacc.mail.impl;
2
3 import java.util.Locale;
4
5 /***
6 * The Cp932 class contains a utility method for converting Microsoft's
7 * Cp 932 into JIS.
8 *
9 * @author Kazuhiro Kazama
10 * @version 1.0 01/06/97
11 *
12 * @since 1.0.2
13 */
14 public class Cp932 {
15
16 private static boolean isCp932 = false;
17
18 static {
19 String p = System.getProperty("iscp932");
20 String os = System.getProperty("os.name");
21 if (Locale.getDefault().getLanguage().equals("ja")) {
22 if (p != null && Boolean.getBoolean(p))
23 isCp932 = true;
24 else if (os != null && (os.startsWith("Win")))
25 isCp932 = true;
26 }
27 }
28
29
30
31
32 private Cp932() {}
33
34
35
36
37 public static String toJIS(String s) {
38
39
40
41
42
43
44
45 StringBuffer sb = new StringBuffer();
46 char c;
47 for (int i = 0; i < s.length(); i++) {
48 c = s.charAt(i);
49
50 switch (c) {
51 case 0xff3c:
52 c = 0x005c;
53 break;
54 case 0xff5e:
55 c = 0x301c;
56 break;
57 case 0x2225:
58 c = 0x2016;
59 break;
60 case 0xff0d:
61 c = 0x2212;
62 break;
63 case 0xffe0:
64 c = 0x00a2;
65 break;
66 case 0xffe1:
67 c = 0x00a3;
68 break;
69 case 0xffe2:
70 c = 0x00ac;
71 break;
72 }
73 sb.append(c);
74 }
75 return new String(sb);
76 }
77
78
79
80
81 public static String toCp932(String s) {
82 if (!isCp932)
83 return s;
84 StringBuffer sb = new StringBuffer();
85 char c;
86 for (int i = 0; i < s.length(); i++) {
87 c = s.charAt(i);
88
89 switch (c) {
90 case 0x005c:
91 c = 0xff3c;
92 break;
93 case 0x301c:
94 c = 0xff5e;
95 break;
96 case 0x2016:
97 c = 0x2225;
98 break;
99 case 0x2212:
100 c = 0xff0d;
101 break;
102 case 0x00a2:
103 c = 0xffe0;
104 break;
105 case 0x00a3:
106 c = 0xffe1;
107 break;
108 case 0x00ac:
109 c = 0xffe2;
110 break;
111 }
112 sb.append(c);
113 }
114 return new String(sb);
115 }
116 }