| 971 | | result = QString::fromLatin1((const char*)buf, length); |
| | 972 | // iso/iec 6937 to unicode (UCS2) convertor... |
| | 973 | // composed encoding - accent first then plain character |
| | 974 | int i; |
| | 975 | i = 0; |
| | 976 | result = QString(""); |
| | 977 | while ((i < length) && (buf[i]!= 0)) |
| | 978 | { |
| | 979 | switch (buf[i]) |
| | 980 | { |
| | 981 | // at first single byte characters |
| | 982 | case 0xA8: result +=QChar(0x00A4); break; |
| | 983 | case 0xA9: result +=QChar(0x2018); break; |
| | 984 | case 0xAA: result +=QChar(0x201C); break; |
| | 985 | case 0xAC: result +=QChar(0x2190); break; |
| | 986 | case 0xAD: result +=QChar(0x2191); break; |
| | 987 | case 0xAE: result +=QChar(0x2192); break; |
| | 988 | case 0xAF: result +=QChar(0x2193); break; |
| | 989 | case 0xB4: result +=QChar(0x00D7); break; |
| | 990 | case 0xB8: result +=QChar(0x00F7); break; |
| | 991 | case 0xB9: result +=QChar(0x2019); break; |
| | 992 | case 0xBA: result +=QChar(0x201D); break; |
| | 993 | case 0xD0: result +=QChar(0x2014); break; |
| | 994 | case 0xD1: result +=QChar(0xB9); break; |
| | 995 | case 0xD2: result +=QChar(0xAE); break; |
| | 996 | case 0xD3: result +=QChar(0xA9); break; |
| | 997 | case 0xD4: result +=QChar(0x2122); break; |
| | 998 | case 0xD5: result +=QChar(0x266A); break; |
| | 999 | case 0xD6: result +=QChar(0xAC); break; |
| | 1000 | case 0xD7: result +=QChar(0xA6); break; |
| | 1001 | case 0xDC: result +=QChar(0x215B); break; |
| | 1002 | case 0xDD: result +=QChar(0x215C); break; |
| | 1003 | case 0xDE: result +=QChar(0x215D); break; |
| | 1004 | case 0xDF: result +=QChar(0x215E); break; |
| | 1005 | case 0xE0: result +=QChar(0x2126); break; |
| | 1006 | case 0xE1: result +=QChar(0xC6); break; |
| | 1007 | case 0xE2: result +=QChar(0xD0); break; |
| | 1008 | case 0xE3: result +=QChar(0xAA); break; |
| | 1009 | case 0xE4: result +=QChar(0x126); break; |
| | 1010 | case 0xE6: result +=QChar(0x132); break; |
| | 1011 | case 0xE7: result +=QChar(0x013F); break; |
| | 1012 | case 0xE8: result +=QChar(0x141); break; |
| | 1013 | case 0xE9: result +=QChar(0xD8); break; |
| | 1014 | case 0xEA: result +=QChar(0x152); break; |
| | 1015 | case 0xEB: result +=QChar(0xBA); break; |
| | 1016 | case 0xEC: result +=QChar(0xDE); break; |
| | 1017 | case 0xED: result +=QChar(0x166); break; |
| | 1018 | case 0xEE: result +=QChar(0x014A); break; |
| | 1019 | case 0xEF: result +=QChar(0x149); break; |
| | 1020 | case 0xF0: result +=QChar(0x138); break; |
| | 1021 | case 0xF1: result +=QChar(0xE6); break; |
| | 1022 | case 0xF2: result +=QChar(0x111); break; |
| | 1023 | case 0xF3: result +=QChar(0xF0); break; |
| | 1024 | case 0xF4: result +=QChar(0x127); break; |
| | 1025 | case 0xF5: result +=QChar(0x131); break; |
| | 1026 | case 0xF6: result +=QChar(0x133); break; |
| | 1027 | case 0xF7: result +=QChar(0x140); break; |
| | 1028 | case 0xF8: result +=QChar(0x142); break; |
| | 1029 | case 0xF9: result +=QChar(0xF8); break; |
| | 1030 | case 0xFA: result +=QChar(0x153); break; |
| | 1031 | case 0xFB: result +=QChar(0xDF); break; |
| | 1032 | case 0xFC: result +=QChar(0xFE); break; |
| | 1033 | case 0xFD: result +=QChar(0x167); break; |
| | 1034 | case 0xFE: result +=QChar(0x014B); break; |
| | 1035 | case 0xFF: result +=QChar(0xAD); break; |
| | 1036 | // multibyte |
| | 1037 | case 0xC1: |
| | 1038 | i++; |
| | 1039 | switch (buf[i]) |
| | 1040 | { |
| | 1041 | case 0x41: result +=QChar(0xC0); break; |
| | 1042 | case 0x45: result +=QChar(0xC8); break; |
| | 1043 | case 0x49: result +=QChar(0xCC); break; |
| | 1044 | case 0x4F: result +=QChar(0xD2); break; |
| | 1045 | case 0x55: result +=QChar(0xD9); break; |
| | 1046 | case 0x61: result +=QChar(0xE0); break; |
| | 1047 | case 0x65: result +=QChar(0xE8); break; |
| | 1048 | case 0x69: result +=QChar(0xEC); break; |
| | 1049 | case 0x6F: result +=QChar(0xF2); break; |
| | 1050 | case 0x75: result +=QChar(0xF9); break; |
| | 1051 | // unknown character --> fallback |
| | 1052 | default: result +=buf[i]; break; |
| | 1053 | } |
| | 1054 | break; |
| | 1055 | case 0xC2: |
| | 1056 | i++; |
| | 1057 | switch (buf[i]) |
| | 1058 | { |
| | 1059 | case 0x20: result +=QChar(0xB4); break; |
| | 1060 | case 0x41: result +=QChar(0xC1); break; |
| | 1061 | case 0x43: result +=QChar(0x106); break; |
| | 1062 | case 0x45: result +=QChar(0xC9); break; |
| | 1063 | case 0x49: result +=QChar(0xCD); break; |
| | 1064 | case 0x4C: result +=QChar(0x139); break; |
| | 1065 | case 0x4E: result +=QChar(0x143); break; |
| | 1066 | case 0x4F: result +=QChar(0xD3); break; |
| | 1067 | case 0x52: result +=QChar(0x154); break; |
| | 1068 | case 0x53: result +=QChar(0x015A); break; |
| | 1069 | case 0x55: result +=QChar(0xDA); break; |
| | 1070 | case 0x59: result +=QChar(0xDD); break; |
| | 1071 | case 0x5A: result +=QChar(0x179); break; |
| | 1072 | case 0x61: result +=QChar(0xE1); break; |
| | 1073 | case 0x63: result +=QChar(0x107); break; |
| | 1074 | case 0x65: result +=QChar(0xE9); break; |
| | 1075 | case 0x69: result +=QChar(0xED); break; |
| | 1076 | case 0x6C: result +=QChar(0x013A); break; |
| | 1077 | case 0x6E: result +=QChar(0x144); break; |
| | 1078 | case 0x6F: result +=QChar(0xF3); break; |
| | 1079 | case 0x72: result +=QChar(0x155); break; |
| | 1080 | case 0x73: result +=QChar(0x015B); break; |
| | 1081 | case 0x75: result +=QChar(0xFA); break; |
| | 1082 | case 0x79: result +=QChar(0xFD); break; |
| | 1083 | case 0x7A: result +=QChar(0x017A); break; |
| | 1084 | // unknown character --> fallback |
| | 1085 | default: result +=buf[i]; break; |
| | 1086 | } |
| | 1087 | break; |
| | 1088 | |
| | 1089 | case 0xC3: |
| | 1090 | i++; |
| | 1091 | switch (buf[i]) |
| | 1092 | { |
| | 1093 | case 0x41: result +=QChar(0xC2); break; |
| | 1094 | case 0x43: result +=QChar(0x108); break; |
| | 1095 | case 0x45: result +=QChar(0xCA); break; |
| | 1096 | case 0x47: result +=QChar(0x011C); break; |
| | 1097 | case 0x48: result +=QChar(0x124); break; |
| | 1098 | case 0x49: result +=QChar(0xCE); break; |
| | 1099 | case 0x4A: result +=QChar(0x134); break; |
| | 1100 | case 0x4F: result +=QChar(0xD4); break; |
| | 1101 | case 0x53: result +=QChar(0x015C); break; |
| | 1102 | case 0x55: result +=QChar(0xDB); break; |
| | 1103 | case 0x57: result +=QChar(0x174); break; |
| | 1104 | case 0x59: result +=QChar(0x176); break; |
| | 1105 | case 0x61: result +=QChar(0xE2); break; |
| | 1106 | case 0x63: result +=QChar(0x109); break; |
| | 1107 | case 0x65: result +=QChar(0xEA); break; |
| | 1108 | case 0x67: result +=QChar(0x011D); break; |
| | 1109 | case 0x68: result +=QChar(0x125); break; |
| | 1110 | case 0x69: result +=QChar(0xEE); break; |
| | 1111 | case 0x6A: result +=QChar(0x135); break; |
| | 1112 | case 0x6F: result +=QChar(0xF4); break; |
| | 1113 | case 0x73: result +=QChar(0x015D); break; |
| | 1114 | case 0x75: result +=QChar(0xFB); break; |
| | 1115 | case 0x77: result +=QChar(0x175); break; |
| | 1116 | case 0x79: result +=QChar(0x177); break; |
| | 1117 | // unknown character --> fallback |
| | 1118 | default: result +=buf[i]; break; |
| | 1119 | } |
| | 1120 | break; |
| | 1121 | case 0xC4: |
| | 1122 | i++; |
| | 1123 | switch (buf[i]) |
| | 1124 | { |
| | 1125 | case 0x41: result +=QChar(0xC3); break; |
| | 1126 | case 0x49: result +=QChar(0x128); break; |
| | 1127 | case 0x4E: result +=QChar(0xD1); break; |
| | 1128 | case 0x4F: result +=QChar(0xD5); break; |
| | 1129 | case 0x55: result +=QChar(0x168); break; |
| | 1130 | case 0x61: result +=QChar(0xE3); break; |
| | 1131 | case 0x69: result +=QChar(0x129); break; |
| | 1132 | case 0x6E: result +=QChar(0xF1); break; |
| | 1133 | case 0x6F: result +=QChar(0xF5); break; |
| | 1134 | case 0x75: result +=QChar(0x169); break; |
| | 1135 | // unknown character --> fallback |
| | 1136 | default: result +=buf[i]; break; |
| | 1137 | } |
| | 1138 | break; |
| | 1139 | case 0xC5: |
| | 1140 | i++; |
| | 1141 | switch (buf[i]) |
| | 1142 | { |
| | 1143 | case 0x20: result +=QChar(0xAF); break; |
| | 1144 | case 0x41: result +=QChar(0x100); break; |
| | 1145 | case 0x45: result +=QChar(0x112); break; |
| | 1146 | case 0x49: result +=QChar(0x012A); break; |
| | 1147 | case 0x4F: result +=QChar(0x014C); break; |
| | 1148 | case 0x55: result +=QChar(0x016A); break; |
| | 1149 | case 0x61: result +=QChar(0x101); break; |
| | 1150 | case 0x65: result +=QChar(0x113); break; |
| | 1151 | case 0x69: result +=QChar(0x012B); break; |
| | 1152 | case 0x6F: result +=QChar(0x014D); break; |
| | 1153 | case 0x75: result +=QChar(0x016B); break; |
| | 1154 | // unknown character --> fallback |
| | 1155 | default: result +=buf[i]; break; |
| | 1156 | } |
| | 1157 | break; |
| | 1158 | case 0xC6: |
| | 1159 | i++; |
| | 1160 | switch (buf[i]) |
| | 1161 | { |
| | 1162 | case 0x20: result +=QChar(0x02D8); break; |
| | 1163 | case 0x41: result +=QChar(0x102); break; |
| | 1164 | case 0x47: result +=QChar(0x011E); break; |
| | 1165 | case 0x55: result +=QChar(0x016C); break; |
| | 1166 | case 0x61: result +=QChar(0x103); break; |
| | 1167 | case 0x67: result +=QChar(0x011F); break; |
| | 1168 | case 0x75: result +=QChar(0x016D); break; |
| | 1169 | // unknown character --> fallback |
| | 1170 | default: result +=buf[i]; break; |
| | 1171 | } |
| | 1172 | break; |
| | 1173 | case 0xC7: |
| | 1174 | i++; |
| | 1175 | switch (buf[i]) |
| | 1176 | { |
| | 1177 | case 0x20: result +=QChar(0x02D9); break; |
| | 1178 | case 0x43: result +=QChar(0x010A); break; |
| | 1179 | case 0x45: result +=QChar(0x116); break; |
| | 1180 | case 0x47: result +=QChar(0x120); break; |
| | 1181 | case 0x49: result +=QChar(0x130); break; |
| | 1182 | case 0x5A: result +=QChar(0x017B); break; |
| | 1183 | case 0x63: result +=QChar(0x010B); break; |
| | 1184 | case 0x65: result +=QChar(0x117); break; |
| | 1185 | case 0x67: result +=QChar(0x121); break; |
| | 1186 | case 0x7A: result +=QChar(0x017C); break; |
| | 1187 | // unknown character --> fallback |
| | 1188 | default: result +=buf[i]; break; |
| | 1189 | } |
| | 1190 | break; |
| | 1191 | case 0xC8: |
| | 1192 | i++; |
| | 1193 | switch (buf[i]) |
| | 1194 | { |
| | 1195 | case 0x20: result +=QChar(0xA8); break; |
| | 1196 | case 0x41: result +=QChar(0xC4); break; |
| | 1197 | case 0x45: result +=QChar(0xCB); break; |
| | 1198 | case 0x49: result +=QChar(0xCF); break; |
| | 1199 | case 0x4F: result +=QChar(0xD6); break; |
| | 1200 | case 0x55: result +=QChar(0xDC); break; |
| | 1201 | case 0x59: result +=QChar(0x178); break; |
| | 1202 | case 0x61: result +=QChar(0xE4); break; |
| | 1203 | case 0x65: result +=QChar(0xEB); break; |
| | 1204 | case 0x69: result +=QChar(0xEF); break; |
| | 1205 | case 0x6F: result +=QChar(0xF6); break; |
| | 1206 | case 0x75: result +=QChar(0xFC); break; |
| | 1207 | case 0x79: result +=QChar(0xFF); break; |
| | 1208 | // unknown character --> fallback |
| | 1209 | default: result +=buf[i]; break; |
| | 1210 | } |
| | 1211 | break; |
| | 1212 | case 0xCA: |
| | 1213 | i++; |
| | 1214 | switch (buf[i]) |
| | 1215 | { |
| | 1216 | case 0x20: result +=QChar(0x02DA); break; |
| | 1217 | case 0x41: result +=QChar(0xC5); break; |
| | 1218 | case 0x55: result +=QChar(0x016E); break; |
| | 1219 | case 0x61: result +=QChar(0xE5); break; |
| | 1220 | case 0x75: result +=QChar(0x016F); break; |
| | 1221 | // unknown character --> fallback |
| | 1222 | default: result +=buf[i]; break; |
| | 1223 | } |
| | 1224 | break; |
| | 1225 | case 0xCB: |
| | 1226 | i++; |
| | 1227 | switch (buf[i]) |
| | 1228 | { |
| | 1229 | case 0x20: result +=QChar(0xB8); break; |
| | 1230 | case 0x43: result +=QChar(0xC7); break; |
| | 1231 | case 0x47: result +=QChar(0x122); break; |
| | 1232 | case 0x4B: result +=QChar(0x136); break; |
| | 1233 | case 0x4C: result +=QChar(0x013B); break; |
| | 1234 | case 0x4E: result +=QChar(0x145); break; |
| | 1235 | case 0x52: result +=QChar(0x156); break; |
| | 1236 | case 0x53: result +=QChar(0x015E); break; |
| | 1237 | case 0x54: result +=QChar(0x162); break; |
| | 1238 | case 0x63: result +=QChar(0xE7); break; |
| | 1239 | case 0x67: result +=QChar(0x123); break; |
| | 1240 | case 0x6B: result +=QChar(0x137); break; |
| | 1241 | case 0x6C: result +=QChar(0x013C); break; |
| | 1242 | case 0x6E: result +=QChar(0x146); break; |
| | 1243 | case 0x72: result +=QChar(0x157); break; |
| | 1244 | case 0x73: result +=QChar(0x015F); break; |
| | 1245 | case 0x74: result +=QChar(0x163); break; |
| | 1246 | // unknown character --> fallback |
| | 1247 | default: result +=buf[i]; break; |
| | 1248 | } |
| | 1249 | break; |
| | 1250 | case 0xCD: |
| | 1251 | i++; |
| | 1252 | switch (buf[i]) |
| | 1253 | { |
| | 1254 | case 0x20: result +=QChar(0x02DD); break; |
| | 1255 | case 0x4F: result +=QChar(0x150); break; |
| | 1256 | case 0x55: result +=QChar(0x170); break; |
| | 1257 | case 0x6F: result +=QChar(0x151); break; |
| | 1258 | case 0x75: result +=QChar(0x171); break; |
| | 1259 | // unknown character --> fallback |
| | 1260 | default: result +=buf[i]; break; |
| | 1261 | } |
| | 1262 | break; |
| | 1263 | case 0xCE: |
| | 1264 | i++; |
| | 1265 | switch (buf[i]) |
| | 1266 | { |
| | 1267 | case 0x20: result +=QChar(0x02DB); break; |
| | 1268 | case 0x41: result +=QChar(0x104); break; |
| | 1269 | case 0x45: result +=QChar(0x118); break; |
| | 1270 | case 0x49: result +=QChar(0x012E); break; |
| | 1271 | case 0x55: result +=QChar(0x172); break; |
| | 1272 | case 0x61: result +=QChar(0x105); break; |
| | 1273 | case 0x65: result +=QChar(0x119); break; |
| | 1274 | case 0x69: result +=QChar(0x012F); break; |
| | 1275 | case 0x75: result +=QChar(0x173); break; |
| | 1276 | // unknown character --> fallback |
| | 1277 | default: result +=buf[i]; break; |
| | 1278 | } |
| | 1279 | break; |
| | 1280 | case 0xCF: |
| | 1281 | i++; |
| | 1282 | switch (buf[i]) |
| | 1283 | { |
| | 1284 | case 0x20: result +=QChar(0x02C7); break; |
| | 1285 | case 0x43: result +=QChar(0x010C); break; |
| | 1286 | case 0x44: result +=QChar(0x010E); break; |
| | 1287 | case 0x45: result +=QChar(0x011A); break; |
| | 1288 | case 0x4C: result +=QChar(0x013D); break; |
| | 1289 | case 0x4E: result +=QChar(0x147); break; |
| | 1290 | case 0x52: result +=QChar(0x158); break; |
| | 1291 | case 0x53: result +=QChar(0x160); break; |
| | 1292 | case 0x54: result +=QChar(0x164); break; |
| | 1293 | case 0x5A: result +=QChar(0x017D); break; |
| | 1294 | case 0x63: result +=QChar(0x010D); break; |
| | 1295 | case 0x64: result +=QChar(0x010F); break; |
| | 1296 | case 0x65: result +=QChar(0x011B); break; |
| | 1297 | case 0x6C: result +=QChar(0x013E); break; |
| | 1298 | case 0x6E: result +=QChar(0x148); break; |
| | 1299 | case 0x72: result +=QChar(0x159); break; |
| | 1300 | case 0x73: result +=QChar(0x161); break; |
| | 1301 | case 0x74: result +=QChar(0x165); break; |
| | 1302 | case 0x7A: result +=QChar(0x017E); break; |
| | 1303 | // unknown character --> fallback |
| | 1304 | default: result +=buf[i]; break; |
| | 1305 | } |
| | 1306 | break; |
| | 1307 | // rest is the same |
| | 1308 | default: result +=buf[i]; break; |
| | 1309 | } |
| | 1310 | if (buf[i] != 0) |
| | 1311 | { |
| | 1312 | i++; |
| | 1313 | } |
| | 1314 | } |
| | 1315 | // result = QString::fromLatin1((const char*)buf, length); |