Гость
Форумы / Android [игнор отключен] [закрыт для гостей] / Чтение dbf / 25 сообщений из 26, страница 1 из 2
24.03.2015, 22:05
    #38915654
Pashekka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение dbf
Необходимо прочитать dbf файл, Затем кэшировать в sqllite для дальнейшей работы.

Пробую использовать JDBF и чего-то не понимаю.
Написано в примере:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Чтение

String file_path = "C:\\путь к файлу\\файл.dbf";
DBFReader reader = new DBFReader(file_path);
int fields_count = количество_столбцов;
while(reader.hasNextRecord()) {
    Object[] current_DBF_record = new Object[fields_count];
    current_DBF_record = reader.nextRecord();

    //если нужны объекты в виде строк
    String[] current_DBF_record_str = new String[fields_count];
    for(int i=0; i current_DBF_record_str[i] = new String(current_DBF_record[i].toString().getBytes(), "CP866"); //тут может быть другая кодировка

}
reader.close();


Переписал так:
Код: java
1.
2.
3.
4.
5.
6.
7.
try {
            DBFReader dbf = new DBFReader(filePath);
            ...
            dbf.close();
        } catch (JDBFException e) {
            Log.d(LOG_TAG, e.getMessage());
        }


при объявлении DBFReader dbf = new DBFReader(filePath); сразу же генерируется Exception с сообщением:
Код: java
1.
The field length should be less than 254 characters for character fields. Got: 254


В следствии чего возникает два вопроса:

1 - Что я делаю не так?
2 - Есть ли другие варианты чтения dbf?
...
Рейтинг: 0 / 0
24.03.2015, 23:07
    #38915725
wamaco
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение dbf
Pashekka,

длина файла не более 8 символов и на латинице.
...
Рейтинг: 0 / 0
24.03.2015, 23:35
    #38915752
Pashekka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение dbf
wamacoдлина файла не более 8 символов и на латинице.
Спасибо проблему понял, видимо не подходит библиотека, ограничение, на 254 символа подправил в исходнике, а вот MEMO вообще не понимает. Буду искать что-то другое, не под советуете?
...
Рейтинг: 0 / 0
24.03.2015, 23:59
    #38915771
Pashekka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение dbf
Нашел дополненую версию JDBF+ тут есть чтение MEMO полей. Буду пробовать.
...
Рейтинг: 0 / 0
01.04.2015, 00:55
    #38923239
Pashekka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение dbf
JDBF+ все получилось, только пример не оч. корректный, кому будет интересно поделюсь.
Теперь борюсь с перекодировкой CP866 -> CP1251, если есть вариант помогите.
...
Рейтинг: 0 / 0
01.04.2015, 08:36
    #38923313
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение dbf
PashekkaТеперь борюсь с перекодировкой CP866 -> CP1251, если есть вариант помогите.
Чем встроенные средства не устраивают?

https://docs.oracle.com/javase/tutorial/i18n/text/string.html
...
Рейтинг: 0 / 0
01.04.2015, 23:35
    #38924343
Pashekka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение dbf
wadmanЧем встроенные средства не устраивают?

https://docs.oracle.com/javase/tutorial/i18n/text/string.html
Чего то я не понял с перекодировкой, предполагаю что нужно найти код символа и подставить его из таблицы cp1251?
...
Рейтинг: 0 / 0
01.04.2015, 23:36
    #38924344
Pashekka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение dbf
Хотел обмануть судьбу такой функцией:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    public String encoder(String str){
        String cp1251 = " ЎўЈ¤Ґс¦§Ё©Є«¬­®ЇабвгдежзийклмнопЂЃ‚ѓ„…р†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—˜™љ›њќћџ";
        String cp866 = "абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
        String s = new String();
        char[] ch866 = cp866.toCharArray();
        for (char ch:str.toCharArray())
            if (cp1251.indexOf(ch) > 0) s += ch866[cp1251.indexOf(ch)];
            else s += ch;
        return s;
    }


Но фокус не удался :(
...
Рейтинг: 0 / 0
02.04.2015, 08:58
    #38924455
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение dbf
PashekkawadmanЧем встроенные средства не устраивают?

https://docs.oracle.com/javase/tutorial/i18n/text/string.html
Чего то я не понял с перекодировкой, предполагаю что нужно найти код символа и подставить его из таблицы cp1251?
Доступные кодировки http://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html
Как посмотреть, что есть в андроиде (1251 точно есть) http://www.java2s.com/Tutorial/Java/0180__File/DisplaysAvailableCharsetsandaliases.htm
...
Рейтинг: 0 / 0
02.04.2015, 09:15
    #38924480
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение dbf
...
Рейтинг: 0 / 0
03.04.2015, 21:40
    #38926753
Pashekka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение dbf
wadman, нет у меня cp866
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
04-03 21:25:39.474    8448-8448/? D/egw2﹕ Big5: x-windows-950, Big5windows-950, csBig5windows-950-2000, x-big5
04-03 21:25:39.477    8448-8448/? D/egw2﹕ Big5-HKSCS: Big5-HKSCS, ibm-1375_P100-2007HKSCS-BIG5, big5hkibm-1375
04-03 21:25:39.477    8448-8448/? D/egw2﹕ BOCU-1: ibm-1215, csBOCU-1ibm-1214, BOCU-1
04-03 21:25:39.478    8448-8448/? D/egw2﹕ CESU-8: ibm-9400, CESU-8
04-03 21:25:39.478    8448-8448/? D/egw2﹕ cp864: csIBM864, cp864IBM864, ibm-864ibm-864_X110-1999
04-03 21:25:39.479    8448-8448/? D/egw2﹕ EUC-JP: EUC-JP, ibm-954ujis, X-EUC-JPeucjis, Extended_UNIX_Code_Packed_Format_for_Japaneseibm-954_P101-2007, x-IBM954csEUCPkdFmtJapanese, x-IBM954C
04-03 21:25:39.479    8448-8448/? D/egw2﹕ EUC-KR: 5601, KSC_5601EUC-KR, iso-ir-149windows-949-2000, x-KSC5601ms949, KS_C_5601-1987KS_C_5601-1989, windows-949csEUCKR, koreancsKSC56011987
04-03 21:25:39.480    8448-8448/? D/egw2﹕ GB18030: GB18030, gb18030ibm-1392, windows-54936
04-03 21:25:39.481    8448-8448/? D/egw2﹕ GBK: windows-936-2000, csGB2312EUC-CN, gb2312-1980CP936, csISO58GB231280GB2312, GBKiso-ir-58, GB_2312-80chinese, windows-936MS936
04-03 21:25:39.481    8448-8448/? D/egw2﹕ HZ-GB-2312: HZ, HZ-GB-2312
04-03 21:25:39.481    8448-8448/? D/egw2﹕ ISO-2022-CN: x-ISO-2022-CN-GB, csISO2022CNISO-2022-CN
04-03 21:25:39.482    8448-8448/? D/egw2﹕ ISO-2022-CN-EXT: ISO-2022-CN-EXT
04-03 21:25:39.482    8448-8448/? D/egw2﹕ ISO-2022-JP: ISO-2022-JP, csISO2022JPx-windows-50220, x-windows-iso2022jp
04-03 21:25:39.482    8448-8448/? D/egw2﹕ ISO-2022-KR: csISO2022KR, ISO-2022-KR
04-03 21:25:39.483    8448-8448/? D/egw2﹕ ISO-8859-1: csISOLatin1, latin1ibm-819, iso-ir-1008859_1, ISO_8859-1:1987819, l1IBM819, ISO-8859-1cp819
04-03 21:25:39.483    8448-8448/? D/egw2﹕ ISO-8859-10: ISO-8859-10, iso-8859_10-1998csISOLatin6, ISO_8859-10:1992l6, iso-ir-157latin6
04-03 21:25:39.485    8448-8448/? D/egw2﹕ ISO-8859-13: 8859_13, ISO-8859-13x-IBM921, ibm-921_P100-1995cp921, windows-28603921, ibm-921
04-03 21:25:39.488    8448-8448/? D/egw2﹕ ISO-8859-14: iso-celtic, latin8l8, ISO_8859-14:1998iso-ir-199, ISO-8859-14iso-8859_14-1998
04-03 21:25:39.488    8448-8448/? D/egw2﹕ ISO-8859-15: latin0, iso8859_15_fdis8859_15, l9ibm-923, csisolatin0ISO-8859-15, windows-28605ibm-923_P100-1998, Latin-9923, cp923csisolatin9
04-03 21:25:39.489    8448-8448/? D/egw2﹕ ISO-8859-16: iso-8859_16-2001, l10iso-ir-226, latin10ISO-8859-16, ISO_8859-16:2001
04-03 21:25:39.489    8448-8448/? D/egw2﹕ ISO-8859-2: iso-ir-101, csISOLatin2ibm-912, ibm-912_P100-1995latin2, 8859_2l2, ISO_8859-2:1987windows-28592, cp912912, ISO-8859-2
04-03 21:25:39.490    8448-8448/? D/egw2﹕ ISO-8859-3: ibm-913_P100-2000, ibm-913latin3, csISOLatin3iso-ir-109, l38859_3, ISO_8859-3:1988ISO-8859-3, windows-28593913, cp913
04-03 21:25:39.492    8448-8448/? D/egw2﹕ ISO-8859-4: iso-ir-110, ibm-914windows-28594, ISO_8859-4:1988ibm-914_P100-1995, l4csISOLatin4, 9148859_4, latin4ISO-8859-4, cp914
04-03 21:25:39.493    8448-8448/? D/egw2﹕ ISO-8859-5: cp915, ISO_8859-5:1988windows-28595, ibm-9158859_5, 915ISO-8859-5, ibm-915_P100-1995cyrillic, iso-ir-144csISOLatinCyrillic
04-03 21:25:39.494    8448-8448/? D/egw2﹕ ISO-8859-6: arabic, windows-28596ISO-8859-6-I, iso-ir-127cp1089, 8859_6x-ISO-8859-6S, ISO-8859-6ECMA-114, csISOLatinArabic1089, ibm-1089ISO-8859-6-E, ASMO-708ibm-1089_P100-1995, ISO_8859-6:1987
04-03 21:25:39.495    8448-8448/? D/egw2﹕ ISO-8859-7: sun_eu_greek, ibm-9005csISOLatinGreek, ISO_8859-7:1987greek8, greekibm-9005_X110-2007, windows-28597ECMA-118, ISO-8859-7iso-ir-126, ELOT_928
04-03 21:25:39.495    8448-8448/? D/egw2﹕ ISO-8859-8: ISO-8859-8-I, windows-28598ibm-5012_P100-1999, csISOLatinHebrewhebrew, ibm-5012ISO-8859-8, iso-ir-138ISO-8859-8-E, hebrew88859_8, ISO_8859-8:1988
04-03 21:25:39.496    8448-8448/? D/egw2﹕ ISO-8859-9: windows-28599, 920turkish8, csISOLatin5ECMA-128, ISO-8859-9l5, 8859_9latin5, turkishISO_8859-9:1989, iso-ir-148cp920, ibm-920_P100-1995ibm-920
04-03 21:25:39.497    8448-8448/? D/egw2﹕ KOI8-R: windows-20866, csKOI8RKOI8-R, ibm-878_P100-1996koi8, ibm-878cp878
04-03 21:25:39.498    8448-8448/? D/egw2﹕ KOI8-U: KOI8-U, ibm-1168_P100-2002windows-21866, ibm-1168
04-03 21:25:39.498    8448-8448/? D/egw2﹕ macintosh: macos-0_2-10.2, macromanx-macroman, macwindows-10000, csMacintoshmacintosh
04-03 21:25:39.500    8448-8448/? D/egw2﹕ SCSU: SCSU, ibm-1212ibm-1213
04-03 21:25:39.509    8448-8448/? D/egw2﹕ Shift_JIS: ibm-943_VSUB_VPUA, IBM-943CcsWindows31J, cp943ccsShiftJIS, ibm-943_P15A-2003x-MS932_0213, pcksjis, ms932x-sjis, Shift_JISwindows-932, ibm-943windows-31j, x-JISAutoDetectMS_Kanji, x-ms-cp932cp932
04-03 21:25:39.509    8448-8448/? D/egw2﹕ TIS-620: cp874, windows-874ibm-874, x-IBM874TIS-620, ibm-9066MS874, x-windows-874eucTH, tis620.2533windows-874-2000
04-03 21:25:39.510    8448-8448/? D/egw2﹕ US-ASCII: ibm-367, cp367ascii7, ISO646-US646, csASCIIus, iso_646.irv:1983ISO_646.irv:1991, IBM367ASCII, US-ASCIIANSI_X3.4-1986, windows-20127ANSI_X3.4-1968, iso-ir-6
04-03 21:25:39.511    8448-8448/? D/egw2﹕ UTF-16: ibm-1204, ibm-1205ISO-10646-UCS-2, csUnicodeUTF-16, ucs-2unicode
04-03 21:25:39.512    8448-8448/? D/egw2﹕ UTF-16BE: ibm-61956, ibm-13489ibm-29873, ibm-61955ibm-13488, ibm-21680UnicodeBigUnmarked, ibm-21681ibm-29872, ibm-17584ibm-1200, UTF-16BEibm-17585, ibm-1201UTF16_BigEndian, windows-1201cp1200, cp1201x-utf-16be, ibm-25776ibm-25777
04-03 21:25:39.513    8448-8448/? D/egw2﹕ UTF-16LE: ibm-29874, ibm-17586ibm-1202, ibm-17587ibm-1203, ibm-29875UTF16_LittleEndian, ibm-21682ibm-21683, ibm-13490ibm-13491, UnicodeLittleUnmarkedwindows-1200, ibm-25778ibm-25779, x-utf-16leUTF-16LE
04-03 21:25:39.514    8448-8448/? D/egw2﹕ UTF-32: ucs-4, csUCS4ibm-1237, ISO-10646-UCS-4ibm-1236, UTF-32
04-03 21:25:39.515    8448-8448/? D/egw2﹕ UTF-32BE: ibm-1233, UTF32_BigEndianUTF-32BE, ibm-1232ibm-9424
04-03 21:25:39.515    8448-8448/? D/egw2﹕ UTF-32LE: ibm-1234, ibm-1235UTF32_LittleEndian, UTF-32LE
04-03 21:25:39.516    8448-8448/? D/egw2﹕ UTF-7: UTF-7, windows-65000
04-03 21:25:39.517    8448-8448/? D/egw2﹕ UTF-8: UTF-8, x-UTF_8Jwindows-65001, ibm-17592ibm-13496, ibm-17593ibm-13497, ibm-5304ibm-5305, ibm-1209ibm-1208, cp1208
04-03 21:25:39.517    8448-8448/? D/egw2﹕ windows-1250: cp1250, ibm-5346_P100-1998windows-1250, ibm-5346
04-03 21:25:39.517    8448-8448/? D/egw2﹕ windows-1251: ibm-5347, ANSI1251cp1251, windows-1251ibm-5347_P100-1998
04-03 21:25:39.518    8448-8448/? D/egw2﹕ windows-1252: windows-1252, ibm-5348cp1252, ibm-5348_P100-1997
04-03 21:25:39.518    8448-8448/? D/egw2﹕ windows-1253: cp1253, windows-1253ibm-5349_P100-1998, ibm-5349
04-03 21:25:39.519    8448-8448/? D/egw2﹕ windows-1254: cp1254, windows-1254ibm-5350, ibm-5350_P100-1998
04-03 21:25:39.521    8448-8448/? D/egw2﹕ windows-1255: ibm-9447_P100-2002, ibm-9447cp1255, windows-1255
04-03 21:25:39.522    8448-8448/? D/egw2﹕ windows-1256: cp1256, x-windows-1256Swindows-1256, ibm-9448_X100-2005ibm-9448
04-03 21:25:39.522    8448-8448/? D/egw2﹕ windows-1257: cp1257, ibm-9449windows-1257, ibm-9449_P100-2002
04-03 21:25:39.523    8448-8448/? D/egw2﹕ windows-1258: cp1258, ibm-5354_P100-1998windows-1258, ibm-5354
04-03 21:25:39.523    8448-8448/? D/egw2﹕ x-docomo-shift_jis-2007: docomo-emoji, docomo-shift_jis-2007
04-03 21:25:39.524    8448-8448/? D/egw2﹕ x-gsm-03.38-2000: GSM0338, gsm-03.38-2000
04-03 21:25:39.525    8448-8448/? D/egw2﹕ x-ibm-1383_P110-1999: cp1383, 1383hp15CN, ibm-eucCNibm-1383, ibm-1383_P110-1999ibm-1383_VPUA
04-03 21:25:39.527    8448-8448/? D/egw2﹕ x-IMAP-mailbox-name: IMAP-mailbox-name
04-03 21:25:39.529    8448-8448/? D/egw2﹕ x-iscii-be: windows-57003, iscii-bngx-iscii-be, x-iscii-aswindows-57006
04-03 21:25:39.532    8448-8448/? D/egw2﹕ x-iscii-gu: iscii-guj, windows-57010x-iscii-gu
04-03 21:25:39.532    8448-8448/? D/egw2﹕ x-iscii-ka: iscii-knd, windows-57008x-iscii-ka
04-03 21:25:39.532    8448-8448/? D/egw2﹕ x-iscii-ma: windows-57009, iscii-mlmx-iscii-ma
04-03 21:25:39.534    8448-8448/? D/egw2﹕ x-iscii-or: x-iscii-or, iscii-oriwindows-57007
04-03 21:25:39.534    8448-8448/? D/egw2﹕ x-iscii-pa: iscii-gur, x-iscii-pawindows-57011
04-03 21:25:39.534    8448-8448/? D/egw2﹕ x-iscii-ta: windows-57004, x-iscii-taiscii-tml
04-03 21:25:39.534    8448-8448/? D/egw2﹕ x-iscii-te: iscii-tlg, windows-57005x-iscii-te
04-03 21:25:39.535    8448-8448/? D/egw2﹕ x-ISCII91: iscii-dev, ibm-4902x-iscii-de, windows-57002x-ISCII91
04-03 21:25:39.535    8448-8448/? D/egw2﹕ x-ISO-2022-CN-CNS: ISO-2022-CN-CNS, x-ISO-2022-CN-CNS
04-03 21:25:39.535    8448-8448/? D/egw2﹕ x-iso-8859-11: thai8, x-iso-8859-11ISO-8859-11, iso-8859_11-2001
04-03 21:25:39.535    8448-8448/? D/egw2﹕ x-JavaUnicode: JavaUnicode
04-03 21:25:39.535    8448-8448/? D/egw2﹕ x-kddi-shift_jis-2007: kddi-emoji, kddi-shift_jis-2007
04-03 21:25:39.535    8448-8448/? D/egw2﹕ x-mac-cyrillic: x-MacUkraine, x-mac-cyrillicmacos-7_3-10.2, x-MacCyrillicmac-cyrillic, windows-10007maccy
04-03 21:25:39.535    8448-8448/? D/egw2﹕ x-softbank-shift_jis-2007: softbank-shift_jis-2007, softbank-emoji
04-03 21:25:39.535    8448-8448/? D/egw2﹕ x-UnicodeBig: UnicodeBig
04-03 21:25:39.535    8448-8448/? D/egw2﹕ x-UTF-16LE-BOM: UnicodeLittle, x-UTF-16LE-BOM
04-03 21:25:39.536    8448-8448/? D/egw2﹕ x-UTF16_OppositeEndian: UTF16_OppositeEndian
04-03 21:25:39.536    8448-8448/? D/egw2﹕ x-UTF16_PlatformEndian: UTF16_PlatformEndian
04-03 21:25:39.536    8448-8448/? D/egw2﹕ x-UTF32_OppositeEndian: UTF32_OppositeEndian
04-03 21:25:39.536    8448-8448/? D/egw2﹕ x-UTF32_PlatformEndian: UTF32_PlatformEndian


Не где не могу накопать, нашел вот такую приблуду на C++:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
const wchar_t cp1251 [256] =
{
    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F,
    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F,
    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
    0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021, 0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F,
    0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0098, 0x2122, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F,
    0x00A0, 0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7, 0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407,
    0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7, 0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457,
    0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
    0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
    0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
    0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F
}; // cp1251

const wchar_t cp866 [256] =
{
    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F,
    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F,
    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
    0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
    0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
    0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510,
    0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567,
    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580,
    0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F,
    0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040E, 0x045E, 0x00B0, 0x2219, 0x00B7, 0x221A, 0x2116, 0x00A4, 0x25A0, 0x00A0
}; // cp866
void convert_string (wchar_t* dst, const char* src, int size)
{
    for (int i = 0; i < size; ++ i)
        dst [i] = g_code_page [(unsigned char) src [i]];
} // convert_string


Как я понял сдесь перекодирывают hex код символа для вывода hex нашел функцию charToHex из UnicodeFormatter и далее
Код: java
1.
2.
3.
4.
    public static String printHEX(char[] array, String name) {
        for (int k = 0; k < array.length; k++) {
            return name + "0x" + UnicodeFormatter.byteToHex(array[k]);
        }
...
Рейтинг: 0 / 0
08.04.2015, 22:57
    #38931205
Pashekka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение dbf
Пришлось сделать класс для перекодировки (в java новичок критика приветствуется):
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
public class StHexUtil {

    static public StringBuilder encoder(String str){
        //HEX Таблица символов 866
        String[] Hex866 = {"0000","0001","0002","0003","0004","0005","0006","0007","0008","0009","000A","000B","000C","000D","000E","000F","0010","0011","0012","0013","0014","0015","0016","0017","0018","0019","001A","001B","001C","001D","001E","001F","0020","0021","0022","0023","0024","0025","0026","0027","0028","0029","002A","002B","002C","002D","002E","002F","0030","0031","0032","0033","0034","0035","0036","0037","0038","0039","003A","003B","003C","003D","003E","003F","0040","0041","0042","0043","0044","0045","0046","0047","0048","0049","004A","004B","004C","004D","004E","004F","0050","0051","0052","0053","0054","0055","0056","0057","0058","0059","005A","005B","005C","005D","005E","005F","0060","0061","0062","0063","0064","0065","0066","0067","0068","0069","006A","006B","006C","006D","006E","006F","0070","0071","0072","0073","0074","0075","0076","0077","0078","0079","007A","007B","007C","007D","007E","007F","0402","0403","201A","0453","201E","2026","2020","2021","20AC","2030","0409","2039","040A","040C","040B","040F","0452","2018","2019","201C","201D","2022","2013","2014","0098","2122","0459","203A","045A","045C","045B","045F","00A0","040E","045E","0408","00A4","0490","00A6","00A7","0401","00A9","0404","00AB","00AC","00AD","00AE","0407","00B0","00B1","0406","0456","0491","00B5","00B6","00B7","0451","2116","0454","00BB","0458","0405","0455","0457","0410","0411","0412","0413","0414","0415","0416","0417","0418","0419","041A","041B","041C","041D","041E","041F","0420","0421","0422","0423","0424","0425","0426","0427","0428","0429","042A","042B","042C","042D","042E","042F","0430","0431","0432","0433","0434","0435","0436","0437","0438","0439","043A","043B","043C","043D","043E","043F","0440","0441","0442","0443","0444","0445","0446","0447","0448","0449","044A","044B","044C","044D","044E","044F"};
        //HEX Таблица соответствия в 1251
        String[] Hex1251  = {"0000","0001","0002","0003","0004","0005","0006","0007","0008","0009","000A","000B","000C","000D","000E","000F","0010","0011","0012","0013","0014","0015","0016","0017","0018","0019","001A","001B","001C","001D","001E","001F","0020","0021","0022","0023","0024","0025","0026","0027","0028","0029","002A","002B","002C","002D","002E","002F","0030","0031","0032","0033","0034","0035","0036","0037","0038","0039","003A","003B","003C","003D","003E","003F","0040","0041","0042","0043","0044","0045","0046","0047","0048","0049","004A","004B","004C","004D","004E","004F","0050","0051","0052","0053","0054","0055","0056","0057","0058","0059","005A","005B","005C","005D","005E","005F","0060","0061","0062","0063","0064","0065","0066","0067","0068","0069","006A","006B","006C","006D","006E","006F","0070","0071","0072","0073","0074","0075","0076","0077","0078","0079","007A","007B","007C","007D","007E","007F","0410","0411","0412","0413","0414","0415","0416","0417","0418","0419","041A","041B","041C","041D","041E","041F","0420","0421","0422","0423","0424","0425","0426","0427","0428","0429","042A","042B","042C","042D","042E","042F","0430","0431","0432","0433","0434","0435","0436","0437","0438","0439","043A","043B","043C","043D","043E","043F","2591","2592","2593","2502","2524","2561","2562","2556","2555","2563","2551","2557","255D","255C","255B","2510","2514","2534","252C","251C","2500","253C","255E","255F","255A","2554","2569","2566","2560","2550","256C","2567","2568","2564","2565","2559","2558","2552","2553","256B","256A","2518","250C","2588","2584","258C","2590","2580","0440","0441","0442","0443","0444","0445","0446","0447","0448","0449","044A","044B","044C","044D","044E","044F","0401","0451","0404","0454","0407","0457","040E","045E","00B0","2219","00B7","221A","2116","00A4","25A0","00A0"};
        //Что бы использовать indexOf создадим ListArray и присвоим ему таблицы перекодировки
        ArrayList<String> A866 = new ArrayList<String>(Arrays.asList(Hex866));
        ArrayList <String> A1251 = new ArrayList<String>(Arrays.asList(Hex1251));
        //Строка для сборки
        StringBuilder s = new StringBuilder();
        //Цикл замены hex - кода символа и вставки в строку перекодированного символа
        for (char ch:str.toCharArray()) {
            //Определяем hex - код символа
            String hex = charToHex(ch).toUpperCase();
            //Находим его позицию в ср866
            int idx = A866.indexOf(hex);
            //Собираем строку
            //Меняем его на соотв символ ср1251
            s.append(convertHexToString(A1251.get(idx)));
        }
        return s;
    }

    /*
 * Copyright (c) 1995, 2008, Oracle and/or its affiliates. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 *   - Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 *
 *   - Redistributions in binary form must reproduce the above copyright
 *     notice, this list of conditions and the following disclaimer in the
 *     documentation and/or other materials provided with the distribution.
 *
 *   - Neither the name of Oracle or the names of its
 *     contributors may be used to endorse or promote products derived
 *     from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
    static public String byteToHex(byte b) {
        // Returns hex String representation of byte b
        char hexDigit[] = {
                '0', '1', '2', '3', '4', '5', '6', '7',
                '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
        };
        char[] array = { hexDigit[(b >> 4) & 0x0f], hexDigit[b & 0x0f] };
        return new String(array);
    }

    static public String charToHex(char c) {
        // Returns hex String representation of char c
        byte hi = (byte) (c >>> 8);
        byte lo = (byte) (c & 0xff);
        return byteToHex(hi) + byteToHex(lo);
    }


    static public String convertStringToHex(String str) {

        char[] chars = str.toCharArray();

        StringBuffer hex = new StringBuffer();
        for (int i = 0; i < chars.length; i++) {
            hex.append(Integer.toHexString((int) chars[i]));
        }

        return hex.toString();
    }

    /**
     * convert a String to a hex representation of the String,
     * with 4 hex chars per char of the original String, broken into byte groups.
     * e.g. "1abc ꯍ" gives "0031_0061_0062_0063_0020_abcd"
     * @param //s String to convert to hex equivalent
     * @return hex represenation of string, 4 hex digit chars per char.
     */

    static public String convertHexToString(String hex) {

        StringBuilder sb = new StringBuilder();
        StringBuilder temp = new StringBuilder();

        //49204c6f7665204a617661 split into two characters 49, 20, 4c...
        for (int i = 0; i < hex.length() - 1; i += 4) {

            //grab the hex in pairs
            String output = hex.substring(i, (i + 4));
            //convert hex to decimal
            int decimal = Integer.parseInt(output, 16);
            //convert the decimal to character
            sb.append((char) decimal);

            temp.append(decimal);
        }
        System.out.println("Decimal : " + temp.toString());

        return sb.toString();
    }
}


И все получилось.
Использование
Код: java
1.
String f_name = StHexUtil.encoder(rec.getString("NAME")).toString();


Осталось привести класс в потребный вид и все готово :)
...
Рейтинг: 0 / 0
08.04.2015, 23:05
    #38931208
Pashekka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение dbf
Извините забыл дописать:
Функцию convertHexToString пришлось изменить
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
static public String convertHexToString(String hex) {
...
 //49204c6f7665204a617661 split into two characters 49, 20, 4c...
        for (int i = 0; i < hex.length() - 1; i += 2) {

            //grab the hex in pairs
            String output = hex.substring(i, (i + 2));
...


на т.к. на выходе символ в HEX = 0a00, а в примере HEX = 4c
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
static public String convertHexToString(String hex) {
...
 //0a00
        for (int i = 0; i < hex.length() - 1; i += 4) {

            //grab the hex in pairs
            String output = hex.substring(i, (i + 4));
...


За функцию convertHexToString отдельное спасибо wadman https://docs.oracle.com/javase/tutorial/i18n/text/string.html
...
Рейтинг: 0 / 0
09.04.2015, 09:22
    #38931415
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение dbf
Зачем конвертация делается через hex? Что за магия такая?
...
Рейтинг: 0 / 0
09.04.2015, 16:41
    #38932179
Pashekka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение dbf
wadmanЗачем конвертация делается через hex? Что за магия такая?
Все от лени :) в HEX т.к. я нашел массивы соотв. только в HEX. А есть д.р. вариант?
...
Рейтинг: 0 / 0
09.04.2015, 16:56
    #38932207
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение dbf
Чего-то моя твоя не понимай... Логика у тебя такая, что ты берешь символ, конвертируешь его код в строку-хекс и затем обратный порядок, но в другой кодировке?
...
Рейтинг: 0 / 0
09.04.2015, 17:18
    #38932232
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение dbf
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
package ru.wadman.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import java.io.UnsupportedEncodingException;

public class MainActivity extends Activity {

    TextView textView;

    byte[] byteCp866 ={
            (byte)0x90, (byte)0xAE, (byte)0xE1,
            (byte)0xE1, (byte)0xA8, (byte)0xEF
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView)findViewById(R.id.textView);
        test();
        try {
            textView.setText(new String(byteCp866, "cp866"));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }

}



Странно, но конвертирует без проблем... Закодировано слово "Россия".
...
Рейтинг: 0 / 0
09.04.2015, 17:27
    #38932243
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение dbf
На 5.1 проверил. :) Может не на всех версиях взлетит, но на ней 5.1 выдает такой-же перечень кодировок как и тут 17471957
...
Рейтинг: 0 / 0
10.04.2015, 20:41
    #38933450
Pashekka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение dbf
wadmanНа 5.1 проверил. :) Может не на всех версиях взлетит, но на ней 5.1 выдает такой-же перечень кодировок как и тут 17471957
У меня 4.0.3 и при выполнении выдает "UnsupportedEncodingException: Cp866" по этому и начал замарачиваться, да и к лучшему наверно что выдал прога будет работать на разных моделях в том числе и старых
...
Рейтинг: 0 / 0
10.04.2015, 21:05
    #38933463
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение dbf
PashekkawadmanНа 5.1 проверил. :) Может не на всех версиях взлетит, но на ней 5.1 выдает такой-же перечень кодировок как и тут 17471957
У меня 4.0.3 и при выполнении выдает "UnsupportedEncodingException: Cp866" по этому и начал замарачиваться, да и к лучшему наверно что выдал прога будет работать на разных моделях в том числе и старых
Но способ через преобразование в строковые хекс - странный выбор.
...
Рейтинг: 0 / 0
11.04.2015, 10:13
    #38933686
Pashekka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение dbf
wadmanНо способ через преобразование в строковые хекс - странный выбор.
А как лучше? Через байт код?
...
Рейтинг: 0 / 0
11.04.2015, 10:54
    #38933702
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение dbf
PashekkawadmanНо способ через преобразование в строковые хекс - странный выбор.
А как лучше? Через байт код?
Конечно... Алгоритм такой:
1. Создаешь два массива, один для 866 -> 1251, другой для 1251 -> 866. На будущее. :)
2. Заполняешь их таким образом, чтобы код символа новой кодировки был по тому индексу, где расположен старый.

То есть, если нужно конвертировать из дос в вин русскую А (дос:128 в вин:192), то в массиве в 128-ой позиции должен быть код 192. Русская Б (дос:129 в вин:193), то в массиве в 129 позиции должен быть код 193 и т.д. Получается так, что просто пробегаешься по символам в качестве индекса и складываешь все в новую строку.

Придется немного поработать ручками, но это будет наиболее оптимальный алгоритм конвертирования.
"Лучше за 5 минут долететь..." (с)

Кодировки
http://pascal.net.ru/866
http://pascal.net.ru/1251

Если не сообразишь о чем я написал, то в понедельник (или позднее) накидаю алгоритм в коде.
...
Рейтинг: 0 / 0
11.04.2015, 13:11
    #38933768
Pashekka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение dbf
wadman
Придется немного поработать ручками, но это будет наиболее оптимальный алгоритм конвертирования.
"Лучше за 5 минут долететь..." (с)

Кодировки
http://pascal.net.ru/866
http://pascal.net.ru/1251

Если не сообразишь о чем я написал, то в понедельник (или позднее) накидаю алгоритм в коде.
Принцип понял спс за табл. кодировки время будет сделаю. В принципе именно этого я и хотел.
...
Рейтинг: 0 / 0
11.04.2015, 13:29
    #38933780
Pashekka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение dbf
Нашел интересную процедуру на Pascal
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
procedure Convert1(var a:string);{ASCII->ANSI}
{OEM to ANSI}
var i:integer;
begin
for i:=1 to length(a) do
if ord(a[i]) in [128..175] then a[i]:=chr(ord(a[i])+64)
else if ord(a[i]) in [224..239] then a[i]:=chr(ord(a[i])+16)
else if ord(a[i])=240 then a[i]:=chr(ord(168))
else if ord(a[i])=241then a[i]:=chr(ord(184));
end;


Попробую переделать
...
Рейтинг: 0 / 0
13.04.2015, 10:24
    #38934526
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение dbf
Вот, что я имел в виду: два массива для перекодировки cp866 в cp1251 (win1251) и обратно. И к ним две простые функции. Думаю, что по скорости это самый быстрый вариант.


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
package ru.wadman.myapplication;

/**
 * Created by wadman on 13.04.2015.
 */
public class StringUtils {

    private final static short[] m1251to866 = {
            0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
            0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
            0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
            0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
            0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F,
            0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F,
            0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
            0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F,
            0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F,
            0x90, 0x91, 0x92, 0x93, 0x94, 0xF9, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F,
            0xA0, 0xA1, 0xA2, 0xA3, 0xFD, 0xA5, 0xA6, 0xA7, 0xF0, 0xA9, 0xF2, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF,
            0xF8, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xF1, 0xFC, 0xF3, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF,
            0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F,
            0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F,
            0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF,
            0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF
    };

    private final static short[] m866to1251 = {
            0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
            0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
            0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
            0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
            0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F,
            0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F,
            0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
            0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F,
            0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,
            0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,
            0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
            0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF,
            0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,
            0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,
            0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF,
            0xA8, 0xB8, 0xAA, 0xBA, 0xF4, 0xF5, 0xF6, 0xF7, 0xB0, 0x95, 0xFA, 0xFB, 0xB9, 0xA4, 0xFE, 0xFF
    };

    public static byte[] Convert1251to866(final byte[] source) {
        byte[] result = new byte[source.length];
        for (int i=0;i<source.length;i++) {
            result[i] = (byte)m1251to866[source[i]+256];
        }
        return result;
    }

    public static byte[] Convert866to1251(final byte[] source) {
        byte[] result = new byte[source.length];
        for (int i=0;i<source.length;i++) {
            result[i] = (byte)m866to1251[source[i]+256];
        }
        return result;
    }

}



Символы рубля, евро, №, Ё/ё учитываются.
...
Рейтинг: 0 / 0
Форумы / Android [игнор отключен] [закрыт для гостей] / Чтение dbf / 25 сообщений из 26, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]