1 | #ifndef STRCONVERT_H |
---|
2 | #define STRCONVERT_H |
---|
3 | |
---|
4 | #ifndef USE_ICONV |
---|
5 | |
---|
6 | static unsigned long c88592[96] = { |
---|
7 | 0x00A0, 0x0104, 0x02D8, 0x0141, 0x00A4, 0x013D, 0x015A, 0x00A7, |
---|
8 | 0x00A8, 0x0160, 0x015E, 0x0164, 0x0179, 0x00AD, 0x017D, 0x017B, |
---|
9 | 0x00B0, 0x0105, 0x02DB, 0x0142, 0x00B4, 0x013E, 0x015B, 0x02C7, |
---|
10 | 0x00B8, 0x0161, 0x015F, 0x0165, 0x017A, 0x02DD, 0x017E, 0x017C, |
---|
11 | 0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, |
---|
12 | 0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E, |
---|
13 | 0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7, |
---|
14 | 0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, |
---|
15 | 0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, |
---|
16 | 0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F, |
---|
17 | 0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7, |
---|
18 | 0x0142, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9 |
---|
19 | }; |
---|
20 | |
---|
21 | static unsigned long c88593[96] = { |
---|
22 | 0x00A0, 0x0126, 0x02D8, 0x00A3, 0x00A4, 0x0000, 0x0124, 0x00A7, |
---|
23 | 0x00A8, 0x0130, 0x015E, 0x011E, 0x0134, 0x00AD, 0x0000, 0x017B, |
---|
24 | 0x00B0, 0x0127, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x0125, 0x00B7, |
---|
25 | 0x00B8, 0x0131, 0x015F, 0x011F, 0x0135, 0x00BD, 0x0000, 0x017C, |
---|
26 | 0x00C0, 0x00C1, 0x00C2, 0x0000, 0x00C4, 0x010A, 0x0108, 0x00C7, |
---|
27 | 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, |
---|
28 | 0x0000, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x0120, 0x00D6, 0x00D7, |
---|
29 | 0x011C, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x016C, 0x015C, 0x00DF, |
---|
30 | 0x00E0, 0x00E1, 0x00E2, 0x0000, 0x00E4, 0x010B, 0x0109, 0x00E7, |
---|
31 | 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, |
---|
32 | 0x0000, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x0121, 0x00F6, 0x00F7, |
---|
33 | 0x011D, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x016D, 0x015D, 0x02D9 |
---|
34 | }; |
---|
35 | |
---|
36 | static unsigned long c88594[96] = { |
---|
37 | 0x00A0, 0x0104, 0x0138, 0x0156, 0x00A4, 0x0128, 0x013B, 0x00A7, |
---|
38 | 0x00A8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00AD, 0x017D, 0x00AF, |
---|
39 | 0x00B0, 0x0105, 0x02DB, 0x0157, 0x00B4, 0x0129, 0x013C, 0x02C7, |
---|
40 | 0x00B8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014A, 0x017E, 0x014B, |
---|
41 | 0x0100, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x012E, |
---|
42 | 0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116, 0x00CD, 0x00CE, 0x012A, |
---|
43 | 0x0110, 0x0145, 0x014C, 0x0136, 0x00D4, 0x00D5, 0x00D6, 0x00D7, |
---|
44 | 0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x0168, 0x016A, 0x00DF, |
---|
45 | 0x0101, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x012F, |
---|
46 | 0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x012B, |
---|
47 | 0x0111, 0x0146, 0x014D, 0x0137, 0x00F4, 0x00F5, 0x00F6, 0x00F7, |
---|
48 | 0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x0169, 0x016B, 0x02D9 |
---|
49 | }; |
---|
50 | |
---|
51 | static unsigned long c88595[96] = { |
---|
52 | 0x00A0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, |
---|
53 | 0x0408, 0x0409, 0x040A, 0x040B, 0x040C, 0x00AD, 0x040E, 0x040F, |
---|
54 | 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, |
---|
55 | 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, |
---|
56 | 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, |
---|
57 | 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, |
---|
58 | 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, |
---|
59 | 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, |
---|
60 | 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, |
---|
61 | 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, |
---|
62 | 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, |
---|
63 | 0x0458, 0x0459, 0x045A, 0x045B, 0x045C, 0x00A7, 0x045E, 0x045F |
---|
64 | }; |
---|
65 | |
---|
66 | static unsigned long c88596[96] = { |
---|
67 | 0x00A0, 0x0000, 0x0000, 0x0000, 0x00A4, 0x0000, 0x0000, 0x0000, |
---|
68 | 0x0000, 0x0000, 0x0000, 0x0000, 0x060C, 0x00AD, 0x0000, 0x0000, |
---|
69 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
---|
70 | 0x0000, 0x0000, 0x0000, 0x061B, 0x0000, 0x0000, 0x0000, 0x061F, |
---|
71 | 0x0000, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, |
---|
72 | 0x0628, 0x0629, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E, 0x062F, |
---|
73 | 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, |
---|
74 | 0x0638, 0x0639, 0x063A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
---|
75 | 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, |
---|
76 | 0x0648, 0x0649, 0x064A, 0x064B, 0x064C, 0x064D, 0x064E, 0x064F, |
---|
77 | 0x0650, 0x0651, 0x0652, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
---|
78 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 |
---|
79 | }; |
---|
80 | |
---|
81 | static unsigned long c88597[96] = { |
---|
82 | 0x00A0, 0x2018, 0x2019, 0x00A3, 0x20AC, 0x20AF, 0x00A6, 0x00A7, |
---|
83 | 0x00A8, 0x00A9, 0x037A, 0x00AB, 0x00AC, 0x00AD, 0x0000, 0x2015, |
---|
84 | 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x0385, 0x0386, 0x00B7, |
---|
85 | 0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F, |
---|
86 | 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, |
---|
87 | 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, |
---|
88 | 0x03A0, 0x03A1, 0x0000, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, |
---|
89 | 0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF, |
---|
90 | 0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, |
---|
91 | 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, |
---|
92 | 0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, |
---|
93 | 0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0x0000 |
---|
94 | }; |
---|
95 | |
---|
96 | static unsigned long c88598[96] = { |
---|
97 | 0x00A0, 0x0000, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, |
---|
98 | 0x00A8, 0x00A9, 0x00D7, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, |
---|
99 | 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, |
---|
100 | 0x00B8, 0x00B9, 0x00F7, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x0000, |
---|
101 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
---|
102 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
---|
103 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
---|
104 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2017, |
---|
105 | 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7, |
---|
106 | 0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF, |
---|
107 | 0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7, |
---|
108 | 0x05E8, 0x05E9, 0x05EA, 0x0000, 0x0000, 0x200E, 0x200F, 0x0000 |
---|
109 | }; |
---|
110 | |
---|
111 | static unsigned long c88599[96] = { |
---|
112 | 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, |
---|
113 | 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, |
---|
114 | 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, |
---|
115 | 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, |
---|
116 | 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, |
---|
117 | 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, |
---|
118 | 0x011E, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, |
---|
119 | 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015E, 0x00DF, |
---|
120 | 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, |
---|
121 | 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, |
---|
122 | 0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, |
---|
123 | 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF |
---|
124 | }; |
---|
125 | |
---|
126 | static unsigned long c885910[96] = { |
---|
127 | 0x00A0, 0x0104, 0x0112, 0x0122, 0x012A, 0x0128, 0x0136, 0x00A7, |
---|
128 | 0x013B, 0x0110, 0x0160, 0x0166, 0x017D, 0x00AD, 0x016A, 0x014A, |
---|
129 | 0x00B0, 0x0105, 0x0113, 0x0123, 0x012B, 0x0129, 0x0137, 0x00B7, |
---|
130 | 0x013C, 0x0111, 0x0161, 0x0167, 0x017E, 0x2015, 0x016B, 0x014B, |
---|
131 | 0x0100, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x012E, |
---|
132 | 0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116, 0x00CD, 0x00CE, 0x00CF, |
---|
133 | 0x00D0, 0x0145, 0x014C, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x0168, |
---|
134 | 0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, |
---|
135 | 0x0101, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x012F, |
---|
136 | 0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x00EF, |
---|
137 | 0x00F0, 0x0146, 0x014D, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x0169, |
---|
138 | 0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x0138 |
---|
139 | }; |
---|
140 | |
---|
141 | static unsigned long c885911[96] = { |
---|
142 | 0x00A0, 0x0E01, 0x0E02, 0x0E03, 0x0E04, 0x0E05, 0x0E06, 0x0E07, |
---|
143 | 0x0E08, 0x0E09, 0x0E0A, 0x0E0B, 0x0E0C, 0x0E0D, 0x0E0E, 0x0E0F, |
---|
144 | 0x0E10, 0x0E11, 0x0E12, 0x0E13, 0x0E14, 0x0E15, 0x0E16, 0x0E17, |
---|
145 | 0x0E18, 0x0E19, 0x0E1A, 0x0E1B, 0x0E1C, 0x0E1D, 0x0E1E, 0x0E1F, |
---|
146 | 0x0E20, 0x0E21, 0x0E22, 0x0E23, 0x0E24, 0x0E25, 0x0E26, 0x0E27, |
---|
147 | 0x0E28, 0x0E29, 0x0E2A, 0x0E2B, 0x0E2C, 0x0E2D, 0x0E2E, 0x0E2F, |
---|
148 | 0x0E30, 0x0E31, 0x0E32, 0x0E33, 0x0E34, 0x0E35, 0x0E36, 0x0E37, |
---|
149 | 0x0E38, 0x0E39, 0x0E3A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0E3F, |
---|
150 | 0x0E40, 0x0E41, 0x0E42, 0x0E43, 0x0E44, 0x0E45, 0x0E46, 0x0E47, |
---|
151 | 0x0E48, 0x0E49, 0x0E4A, 0x0E4B, 0x0E4C, 0x0E4D, 0x0E4E, 0x0E4F, |
---|
152 | 0x0E50, 0x0E51, 0x0E52, 0x0E53, 0x0E54, 0x0E55, 0x0E56, 0x0E57, |
---|
153 | 0x0E58, 0x0E59, 0x0E5A, 0x0E5B, 0x0000, 0x0000, 0x0000, 0x0000 |
---|
154 | }; |
---|
155 | |
---|
156 | static unsigned long c885913[96] = { |
---|
157 | 0x00A0, 0x201D, 0x00A2, 0x00A3, 0x00A4, 0x201E, 0x00A6, 0x00A7, |
---|
158 | 0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00C6, |
---|
159 | 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x201C, 0x00B5, 0x00B6, 0x00B7, |
---|
160 | 0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6, |
---|
161 | 0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112, |
---|
162 | 0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B, |
---|
163 | 0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7, |
---|
164 | 0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF, |
---|
165 | 0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113, |
---|
166 | 0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C, |
---|
167 | 0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7, |
---|
168 | 0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x2019 |
---|
169 | }; |
---|
170 | |
---|
171 | static unsigned long c885914[96] = { |
---|
172 | 0x00A0, 0x1E02, 0x1E03, 0x00A3, 0x010A, 0x010B, 0x1E0A, 0x00A7, |
---|
173 | 0x1E80, 0x00A9, 0x1E82, 0x1E0B, 0x1EF2, 0x00AD, 0x00AE, 0x0178, |
---|
174 | 0x1E1E, 0x1E1F, 0x0120, 0x0121, 0x1E40, 0x1E41, 0x00B6, 0x1E56, |
---|
175 | 0x1E81, 0x1E57, 0x1E83, 0x1E60, 0x1EF3, 0x1E84, 0x1E85, 0x1E61, |
---|
176 | 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, |
---|
177 | 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, |
---|
178 | 0x0174, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x1E6A, |
---|
179 | 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x0176, 0x00DF, |
---|
180 | 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, |
---|
181 | 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, |
---|
182 | 0x0175, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x1E6B, |
---|
183 | 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x0177, 0x00FF |
---|
184 | }; |
---|
185 | |
---|
186 | static unsigned long c885915[96] = { |
---|
187 | 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x20AC, 0x00A5, 0x0160, 0x00A7, |
---|
188 | 0x0161, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, |
---|
189 | 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x017D, 0x00B5, 0x00B6, 0x00B7, |
---|
190 | 0x017E, 0x00B9, 0x00BA, 0x00BB, 0x0152, 0x0153, 0x0178, 0x00BF, |
---|
191 | 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, |
---|
192 | 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, |
---|
193 | 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, |
---|
194 | 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, |
---|
195 | 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, |
---|
196 | 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, |
---|
197 | 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, |
---|
198 | 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF |
---|
199 | }; |
---|
200 | |
---|
201 | static unsigned long c885916[96] = { |
---|
202 | 0x00A0, 0x0104, 0x0105, 0x0141, 0x20AC, 0x201E, 0x0160, 0x00A7, |
---|
203 | 0x0161, 0x00A9, 0x0218, 0x00AB, 0x0179, 0x00AD, 0x017A, 0x017B, |
---|
204 | 0x00B0, 0x00B1, 0x010C, 0x0142, 0x017D, 0x201D, 0x00B6, 0x00B7, |
---|
205 | 0x017E, 0x010D, 0x0219, 0x00BB, 0x0152, 0x0153, 0x0178, 0x017C, |
---|
206 | 0x00C0, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0106, 0x00C6, 0x00C7, |
---|
207 | 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, |
---|
208 | 0x0110, 0x0143, 0x00D2, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x015A, |
---|
209 | 0x0170, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0118, 0x021A, 0x00DF, |
---|
210 | 0x00E0, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x0107, 0x00E6, 0x00E7, |
---|
211 | 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, |
---|
212 | 0x0111, 0x0144, 0x00F2, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x015B, |
---|
213 | 0x0171, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0119, 0x021B, 0x00FF |
---|
214 | }; |
---|
215 | |
---|
216 | // Two Char Mapping (many polish services and UPC Direct/HBO services) |
---|
217 | // get from http://mitglied.lycos.de/buran/charsets/videotex-suppl.html |
---|
218 | static inline unsigned int doVideoTexSuppl(char c1, char c2) |
---|
219 | { |
---|
220 | switch((unsigned char)c1) |
---|
221 | { |
---|
222 | case 0xC1: // grave |
---|
223 | switch(c2) |
---|
224 | { |
---|
225 | case 0x61: return 224; |
---|
226 | case 0x41: return 192; |
---|
227 | case 0x65: return 232; |
---|
228 | case 0x45: return 200; |
---|
229 | case 0x69: return 236; |
---|
230 | case 0x49: return 204; |
---|
231 | case 0x6f: return 242; |
---|
232 | case 0x4f: return 210; |
---|
233 | case 0x75: return 249; |
---|
234 | case 0x55: return 217; |
---|
235 | default: return 0; |
---|
236 | } |
---|
237 | case 0xC2: // acute |
---|
238 | switch(c2) |
---|
239 | { |
---|
240 | case 0x61: return 225; |
---|
241 | case 0x41: return 193; |
---|
242 | case 0x65: return 233; |
---|
243 | case 0x45: return 201; |
---|
244 | case 0x69: return 237; |
---|
245 | case 0x49: return 205; |
---|
246 | case 0x6f: return 243; |
---|
247 | case 0x4f: return 211; |
---|
248 | case 0x75: return 250; |
---|
249 | case 0x55: return 218; |
---|
250 | case 0x79: return 253; |
---|
251 | case 0x59: return 221; |
---|
252 | case 0x63: return 263; |
---|
253 | case 0x43: return 262; |
---|
254 | case 0x6c: return 314; |
---|
255 | case 0x4c: return 313; |
---|
256 | case 0x6e: return 324; |
---|
257 | case 0x4e: return 323; |
---|
258 | case 0x72: return 341; |
---|
259 | case 0x52: return 340; |
---|
260 | case 0x73: return 347; |
---|
261 | case 0x53: return 346; |
---|
262 | case 0x7a: return 378; |
---|
263 | case 0x5a: return 377; |
---|
264 | default: return 0; |
---|
265 | } |
---|
266 | case 0xC3: // cedilla |
---|
267 | switch(c2) |
---|
268 | { |
---|
269 | case 0x61: return 226; |
---|
270 | case 0x41: return 194; |
---|
271 | case 0x65: return 234; |
---|
272 | case 0x45: return 202; |
---|
273 | case 0x69: return 238; |
---|
274 | case 0x49: return 206; |
---|
275 | case 0x6f: return 244; |
---|
276 | case 0x4f: return 212; |
---|
277 | case 0x75: return 251; |
---|
278 | case 0x55: return 219; |
---|
279 | case 0x79: return 375; |
---|
280 | case 0x59: return 374; |
---|
281 | case 0x63: return 265; |
---|
282 | case 0x43: return 264; |
---|
283 | case 0x67: return 285; |
---|
284 | case 0x47: return 284; |
---|
285 | case 0x68: return 293; |
---|
286 | case 0x48: return 292; |
---|
287 | case 0x6a: return 309; |
---|
288 | case 0x4a: return 308; |
---|
289 | case 0x73: return 349; |
---|
290 | case 0x53: return 348; |
---|
291 | case 0x77: return 373; |
---|
292 | case 0x57: return 372; |
---|
293 | default: return 0; |
---|
294 | } |
---|
295 | case 0xC4: // tilde |
---|
296 | switch(c2) |
---|
297 | { |
---|
298 | case 0x61: return 227; |
---|
299 | case 0x41: return 195; |
---|
300 | case 0x6e: return 241; |
---|
301 | case 0x4e: return 209; |
---|
302 | case 0x69: return 297; |
---|
303 | case 0x49: return 296; |
---|
304 | case 0x6f: return 245; |
---|
305 | case 0x4f: return 213; |
---|
306 | case 0x75: return 361; |
---|
307 | case 0x55: return 360; |
---|
308 | default: return 0; |
---|
309 | } |
---|
310 | case 0xC6: // breve |
---|
311 | switch(c2) |
---|
312 | { |
---|
313 | case 0x61: return 259; |
---|
314 | case 0x41: return 258; |
---|
315 | case 0x67: return 287; |
---|
316 | case 0x47: return 286; |
---|
317 | case 0x75: return 365; |
---|
318 | case 0x55: return 364; |
---|
319 | default: return 0; |
---|
320 | } |
---|
321 | case 0xC7: // dot above |
---|
322 | switch(c2) |
---|
323 | { |
---|
324 | case 0x63: return 267; |
---|
325 | case 0x43: return 266; |
---|
326 | case 0x65: return 279; |
---|
327 | case 0x45: return 278; |
---|
328 | case 0x67: return 289; |
---|
329 | case 0x47: return 288; |
---|
330 | case 0x49: return 304; |
---|
331 | case 0x7a: return 380; |
---|
332 | case 0x5a: return 379; |
---|
333 | default: return 0; |
---|
334 | } |
---|
335 | case 0xC8: // diaeresis |
---|
336 | switch(c2) |
---|
337 | { |
---|
338 | case 0x61: return 228; |
---|
339 | case 0x41: return 196; |
---|
340 | case 0x65: return 235; |
---|
341 | case 0x45: return 203; |
---|
342 | case 0x69: return 239; |
---|
343 | case 0x49: return 207; |
---|
344 | case 0x6f: return 246; |
---|
345 | case 0x4f: return 214; |
---|
346 | case 0x75: return 252; |
---|
347 | case 0x55: return 220; |
---|
348 | case 0x79: return 255; |
---|
349 | case 0x59: return 376; |
---|
350 | default: return 0; |
---|
351 | } |
---|
352 | case 0xCA: // ring above |
---|
353 | switch(c2) |
---|
354 | { |
---|
355 | case 0x61: return 229; |
---|
356 | case 0x41: return 197; |
---|
357 | case 0x75: return 367; |
---|
358 | case 0x55: return 366; |
---|
359 | default: return 0; |
---|
360 | } |
---|
361 | case 0xCB: // cedilla |
---|
362 | switch(c2) |
---|
363 | { |
---|
364 | case 0x63: return 231; |
---|
365 | case 0x43: return 199; |
---|
366 | case 0x67: return 291; |
---|
367 | case 0x47: return 290; |
---|
368 | case 0x6b: return 311; |
---|
369 | case 0x4b: return 310; |
---|
370 | case 0x6c: return 316; |
---|
371 | case 0x4c: return 315; |
---|
372 | case 0x6e: return 326; |
---|
373 | case 0x4e: return 325; |
---|
374 | case 0x72: return 343; |
---|
375 | case 0x52: return 342; |
---|
376 | case 0x73: return 351; |
---|
377 | case 0x53: return 350; |
---|
378 | case 0x74: return 355; |
---|
379 | case 0x54: return 354; |
---|
380 | default: return 0; |
---|
381 | } |
---|
382 | case 0xCD: // double acute accent |
---|
383 | switch(c2) |
---|
384 | { |
---|
385 | case 0x6f: return 337; |
---|
386 | case 0x4f: return 336; |
---|
387 | case 0x75: return 369; |
---|
388 | case 0x55: return 368; |
---|
389 | default: return 0; |
---|
390 | } |
---|
391 | case 0xCE: // ogonek |
---|
392 | switch(c2) |
---|
393 | { |
---|
394 | case 0x61: return 261; |
---|
395 | case 0x41: return 260; |
---|
396 | case 0x65: return 281; |
---|
397 | case 0x45: return 280; |
---|
398 | case 0x69: return 303; |
---|
399 | case 0x49: return 302; |
---|
400 | case 0x75: return 371; |
---|
401 | case 0x55: return 370; |
---|
402 | default: return 0; |
---|
403 | } |
---|
404 | case 0xCF: // caron |
---|
405 | switch(c2) |
---|
406 | { |
---|
407 | case 0x63: return 269; |
---|
408 | case 0x43: return 268; |
---|
409 | case 0x64: return 271; |
---|
410 | case 0x44: return 270; |
---|
411 | case 0x65: return 283; |
---|
412 | case 0x45: return 282; |
---|
413 | case 0x6c: return 318; |
---|
414 | case 0x4c: return 317; |
---|
415 | case 0x6e: return 328; |
---|
416 | case 0x4e: return 327; |
---|
417 | case 0x72: return 345; |
---|
418 | case 0x52: return 344; |
---|
419 | case 0x73: return 353; |
---|
420 | case 0x53: return 352; |
---|
421 | case 0x74: return 357; |
---|
422 | case 0x54: return 356; |
---|
423 | case 0x7a: return 382; |
---|
424 | case 0x5a: return 381; |
---|
425 | default: return 0; |
---|
426 | } |
---|
427 | } |
---|
428 | return 0; |
---|
429 | } |
---|
430 | |
---|
431 | static inline unsigned int recode(unsigned char d, int cp) |
---|
432 | { |
---|
433 | if(d < 0xA0) return d; |
---|
434 | switch(cp) |
---|
435 | { |
---|
436 | case 0: // Latin1 <-> unicode mapping |
---|
437 | case 1: // 8859-1 <-> unicode mapping |
---|
438 | return d; |
---|
439 | case 2: // 8859-2 -> unicode mapping |
---|
440 | return c88592[d-0xA0]; |
---|
441 | case 3: // 8859-3 -> unicode mapping |
---|
442 | return c88593[d-0xA0]; |
---|
443 | case 4: // 8859-2 -> unicode mapping |
---|
444 | return c88594[d-0xA0]; |
---|
445 | case 5: // 8859-5 -> unicode mapping |
---|
446 | return c88595[d-0xA0]; |
---|
447 | case 6: // 8859-6 -> unicode mapping |
---|
448 | return c88596[d-0xA0]; |
---|
449 | case 7: // 8859-7 -> unicode mapping |
---|
450 | return c88597[d-0xA0]; |
---|
451 | case 8: // 8859-8 -> unicode mapping |
---|
452 | return c88598[d-0xA0]; |
---|
453 | case 9: // 8859-9 -> unicode mapping |
---|
454 | return c88599[d-0xA0]; |
---|
455 | case 10:// 8859-10 -> unicode mapping |
---|
456 | return c885910[d-0xA0]; |
---|
457 | case 11:// 8859-11 -> unicode mapping |
---|
458 | return c885911[d-0xA0]; |
---|
459 | /* case 12:// 8859-12 -> unicode mapping // reserved for indian use.. |
---|
460 | return c885912[d-0xA0];*/ |
---|
461 | case 13:// 8859-13 -> unicode mapping |
---|
462 | return c885913[d-0xA0]; |
---|
463 | case 14:// 8859-14 -> unicode mapping |
---|
464 | return c885914[d-0xA0]; |
---|
465 | case 15:// 8859-15 -> unicode mapping |
---|
466 | return c885915[d-0xA0]; |
---|
467 | case 16:// 8859-16 -> unicode mapping |
---|
468 | return c885916[d-0xA0]; |
---|
469 | default: |
---|
470 | return d; |
---|
471 | } |
---|
472 | } |
---|
473 | |
---|
474 | //flag: 0 = standard |
---|
475 | //flag: 1 = only for channelname to remove 0x86 and 0x87 (for shortname) |
---|
476 | char* strutf8(struct transponder* tpnode, char *data, int len, int table, int free1, int flag) |
---|
477 | { |
---|
478 | int newtable = 0; |
---|
479 | int twochar = 0; |
---|
480 | int i = 0, t = 0; |
---|
481 | unsigned char* res = NULL; |
---|
482 | |
---|
483 | if(len == 0 || data == NULL) return data; |
---|
484 | |
---|
485 | if(tpnode != NULL && tpnode->encoding == 2) |
---|
486 | twochar = 1; |
---|
487 | //else if(flag == 0 && data[0] > 31) return data; |
---|
488 | |
---|
489 | res = malloc(MINMALLOC); |
---|
490 | if(res == NULL) |
---|
491 | { |
---|
492 | err("no mem"); |
---|
493 | return data; |
---|
494 | } |
---|
495 | |
---|
496 | switch(data[0]) |
---|
497 | { |
---|
498 | case 1 ... 12: |
---|
499 | newtable = data[i++] + 4; |
---|
500 | debug(110, "(1..12) text encoded in ISO-8859-%d", table); |
---|
501 | break; |
---|
502 | case 0x10: |
---|
503 | { |
---|
504 | int n = (data[i + 1] << 8) | (data[i + 2]); |
---|
505 | debug(110, "(0x10) text encoded in ISO-8859-%d", n); |
---|
506 | i += 3; |
---|
507 | switch(n) |
---|
508 | { |
---|
509 | case 12: |
---|
510 | debug(110, "unsup. ISO8859-12 enc. %d", n); |
---|
511 | default: |
---|
512 | newtable = n; |
---|
513 | break; |
---|
514 | } |
---|
515 | break; |
---|
516 | } |
---|
517 | case 0x11: |
---|
518 | ++i; |
---|
519 | debug(110, "unsup. Basic Multilingual Plane of ISO/IEC 10646-1 enc."); |
---|
520 | break; |
---|
521 | case 0x12: |
---|
522 | ++i; |
---|
523 | debug(110, "unsup. KSC 5601 enc."); |
---|
524 | break; |
---|
525 | case 0x13: |
---|
526 | ++i; |
---|
527 | debug(110, "unsup. GB-2312-1980 enc."); |
---|
528 | break; |
---|
529 | case 0x14: |
---|
530 | ++i; |
---|
531 | debug(110, "unsup. Big5 subset of ISO/IEC 10646-1 enc."); |
---|
532 | break; |
---|
533 | case 0x0: |
---|
534 | case 0xD ... 0xF: |
---|
535 | case 0x15 ... 0x1F: |
---|
536 | ++i; |
---|
537 | debug(110, "reserved %d", data[0]); |
---|
538 | break; |
---|
539 | } |
---|
540 | |
---|
541 | if(table == 0) table = newtable; |
---|
542 | |
---|
543 | while(i < len) |
---|
544 | { |
---|
545 | unsigned long code = 0; |
---|
546 | |
---|
547 | if(flag == 1 && ((unsigned char)data[i] == 0x86 || (unsigned char)data[i] == 0x87)) |
---|
548 | { |
---|
549 | i++; |
---|
550 | continue; |
---|
551 | } |
---|
552 | |
---|
553 | if(i + 1 < len && twochar && (code = doVideoTexSuppl(data[i], data[i + 1]))) |
---|
554 | i += 2; |
---|
555 | |
---|
556 | if(code == 0) code = recode(data[i++], table); |
---|
557 | if(code == 0) continue; |
---|
558 | |
---|
559 | if(code < 0x80) |
---|
560 | res[t++] = code & 0xff; |
---|
561 | else if((table == 5) && (code == 0x8A)) |
---|
562 | res[t++] = 0x20; |
---|
563 | else if(code < 0x800) |
---|
564 | { |
---|
565 | res[t++] = (code >> 6) | 0xC0; |
---|
566 | res[t++] = (code & 0x3F) | 0x80; |
---|
567 | } |
---|
568 | else if(code < 0x10000) |
---|
569 | { |
---|
570 | res[t++] = (code >> 12) | 0xE0; |
---|
571 | res[t++] = ((code >> 6) & 0x3F) | 0x80; |
---|
572 | res[t++] = (code & 0x3F) | 0x80; |
---|
573 | } |
---|
574 | else |
---|
575 | { |
---|
576 | res[t++] = (code >> 18) | 0xF0; |
---|
577 | res[t++] = ((code >> 12) & 0x3F) | 0x80; |
---|
578 | res[t++] = ((code >> 6) & 0x3F) | 0x80; |
---|
579 | res[t++] = (code & 0x3F) | 0x80; |
---|
580 | } |
---|
581 | if(t + 4 > MINMALLOC) |
---|
582 | { |
---|
583 | debug(110, "buffer to small.. break now"); |
---|
584 | break; |
---|
585 | } |
---|
586 | } |
---|
587 | |
---|
588 | if(free1 == 1) free(data); |
---|
589 | |
---|
590 | res = realloc(res, t + 1); |
---|
591 | res[t] = '\0'; |
---|
592 | return (char*)res; |
---|
593 | } |
---|
594 | |
---|
595 | #else //iconv |
---|
596 | |
---|
597 | #include <iconv.h> |
---|
598 | |
---|
599 | static char iconvbuf[1024 * 6]; // UTF-8 needs up to 6 bytes |
---|
600 | |
---|
601 | //The spec says ISO-6937, but many stations get it wrong and use ISO-8859-1 |
---|
602 | char *iso6937_encoding = "ISO-8859-1"; |
---|
603 | |
---|
604 | int encoding_default(char *t, char **s, char *d) |
---|
605 | { |
---|
606 | strncpy(t, iso6937_encoding, 16); |
---|
607 | return 0; |
---|
608 | } |
---|
609 | |
---|
610 | int encoding_fixed(char *t, char **s, char *d) |
---|
611 | { |
---|
612 | strncpy(t, d, 16); |
---|
613 | *s += 1; |
---|
614 | return 0; |
---|
615 | } |
---|
616 | |
---|
617 | int encoding_variable(char *t, char **s, char *d) |
---|
618 | { |
---|
619 | int i = ((unsigned char) * s[1] << 8) + (unsigned char) * s[2]; |
---|
620 | snprintf(t, 16, d, i); |
---|
621 | *s += 3; |
---|
622 | return 0; |
---|
623 | } |
---|
624 | |
---|
625 | int encoding_reserved(char *t, char **s, char *d) |
---|
626 | { |
---|
627 | err("Reserved encoding: %02x", *s[0]); |
---|
628 | return 1; |
---|
629 | } |
---|
630 | |
---|
631 | struct encoding |
---|
632 | { |
---|
633 | int (*handler)(char *t, char **s, char *d); |
---|
634 | char *data; |
---|
635 | } encoding[256] = { |
---|
636 | [0x00] = {encoding_reserved, NULL}, |
---|
637 | [0x01] = {encoding_fixed, "ISO-8859-5"}, |
---|
638 | [0x02] = {encoding_fixed, "ISO-8859-6"}, |
---|
639 | [0x03] = {encoding_fixed, "ISO-8859-7"}, |
---|
640 | [0x04] = {encoding_fixed, "ISO-8859-8"}, |
---|
641 | [0x05] = {encoding_fixed, "ISO-8859-9"}, |
---|
642 | [0x06] = {encoding_fixed, "ISO-8859-10"}, |
---|
643 | [0x07] = {encoding_fixed, "ISO-8859-11"}, |
---|
644 | [0x08] = {encoding_fixed, "ISO-8859-12"}, |
---|
645 | [0x09] = {encoding_fixed, "ISO-8859-13"}, |
---|
646 | [0x0A] = {encoding_fixed, "ISO-8859-14"}, |
---|
647 | [0x0B] = {encoding_fixed, "ISO-8859-15"}, |
---|
648 | [0x0C] = {encoding_reserved, NULL}, |
---|
649 | [0x0D] = {encoding_reserved, NULL}, |
---|
650 | [0x0E] = {encoding_reserved, NULL}, |
---|
651 | [0x0F] = {encoding_reserved, NULL}, |
---|
652 | [0x10] = {encoding_variable, "ISO-8859-%d"}, |
---|
653 | [0x11] = {encoding_fixed, "ISO-10646/UCS2"}, //FIXME: UCS-2 LE/BE ??? |
---|
654 | [0x12] = {encoding_fixed, "KSC_5601"}, |
---|
655 | [0x13] = {encoding_fixed, "GB_2312-80"}, |
---|
656 | [0x14] = {encoding_fixed, "BIG5"}, |
---|
657 | [0x15] = {encoding_fixed, "ISO-10646/UTF8"}, |
---|
658 | [0x16] = {encoding_reserved, NULL}, |
---|
659 | [0x17] = {encoding_reserved, NULL}, |
---|
660 | [0x18] = {encoding_reserved, NULL}, |
---|
661 | [0x19] = {encoding_reserved, NULL}, |
---|
662 | [0x1A] = {encoding_reserved, NULL}, |
---|
663 | [0x1B] = {encoding_reserved, NULL}, |
---|
664 | [0x1C] = {encoding_reserved, NULL}, |
---|
665 | [0x1D] = {encoding_reserved, NULL}, |
---|
666 | [0x1E] = {encoding_reserved, NULL}, |
---|
667 | [0x1F] = {encoding_reserved, NULL}, |
---|
668 | [0x20 ... 0xFF] = {encoding_default, NULL}, |
---|
669 | }; |
---|
670 | |
---|
671 | char cs_old[16]; |
---|
672 | iconv_t cd = NULL; |
---|
673 | |
---|
674 | char* strutf8(struct transponder* tpnode, char *data, int len, int table, int free1, int flag) |
---|
675 | { |
---|
676 | char cs_new[16]; |
---|
677 | |
---|
678 | if(data == NULL) return data; |
---|
679 | |
---|
680 | int i = (int)(unsigned char)data[0]; |
---|
681 | if(encoding[i].handler(cs_new, &data, encoding[i].data)) |
---|
682 | return data; |
---|
683 | if(strncmp(cs_old, cs_new, 16) != 0 || cd == NULL) |
---|
684 | { |
---|
685 | if(cd) |
---|
686 | { |
---|
687 | iconv_close(cd); |
---|
688 | cd = NULL; |
---|
689 | } |
---|
690 | cd = iconv_open("UTF-8", cs_new); |
---|
691 | if(cd == (iconv_t)-1) |
---|
692 | { |
---|
693 | perr("iconv_open() failed"); |
---|
694 | cd = NULL; |
---|
695 | return data; |
---|
696 | } |
---|
697 | } |
---|
698 | |
---|
699 | char *inbuf = (char*)data; |
---|
700 | size_t inbytesleft = len; |
---|
701 | char *outbuf = (char*)iconvbuf; |
---|
702 | size_t outbytesleft = sizeof(iconvbuf); |
---|
703 | size_t ret = iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft); |
---|
704 | // FIXME: handle errors |
---|
705 | |
---|
706 | return ostrcat(iconvbuf, NULL, 0, 0); |
---|
707 | } |
---|
708 | |
---|
709 | #endif |
---|
710 | |
---|
711 | int strfreetype(char* string, FT_ULong* cret) |
---|
712 | { |
---|
713 | int ret = 0, len = 0, count = 0; |
---|
714 | unsigned char cur = 0; |
---|
715 | char* tmpstr = string; |
---|
716 | |
---|
717 | while(*string) |
---|
718 | { |
---|
719 | count++; |
---|
720 | cur = *string++ & 0xFF; |
---|
721 | |
---|
722 | if(cur >= 0xC0) |
---|
723 | { |
---|
724 | if(cur < 0xE0) //U+0080 - U+07FF |
---|
725 | { |
---|
726 | ret = len = 1; |
---|
727 | *cret = cur & 0x1F; |
---|
728 | continue; |
---|
729 | } |
---|
730 | else if(cur < 0xF0) //U+0800 - U+FFFF |
---|
731 | { |
---|
732 | ret = len = 2; |
---|
733 | *cret = cur & 0x0F; |
---|
734 | continue; |
---|
735 | } |
---|
736 | else if(cur < 0xF8) //U+10000 - U+10FFF |
---|
737 | { |
---|
738 | ret = len = 3; |
---|
739 | *cret = cur & 0x07; |
---|
740 | continue; |
---|
741 | } |
---|
742 | len = 1; //no utf8 char |
---|
743 | break; |
---|
744 | } |
---|
745 | else if(cur >= 0x80 && count > 1) |
---|
746 | { |
---|
747 | --len; |
---|
748 | if(len >=0 ) |
---|
749 | { |
---|
750 | *cret <<= 6; |
---|
751 | *cret += cur & 0x3F; |
---|
752 | } |
---|
753 | if(len > 0) |
---|
754 | continue; |
---|
755 | |
---|
756 | len = 0; |
---|
757 | } |
---|
758 | else |
---|
759 | *cret = cur; |
---|
760 | |
---|
761 | break; |
---|
762 | } |
---|
763 | |
---|
764 | if(len != 0) //no utf8 char |
---|
765 | { |
---|
766 | *cret = *tmpstr & 0xFF; |
---|
767 | ret = 0; |
---|
768 | } |
---|
769 | return ret; |
---|
770 | } |
---|
771 | |
---|
772 | #endif |
---|