Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 txt из 8859-1 в Windows 1251  [new]
Kulakov Oleg
Member

Откуда:
Сообщений: 61
Уважаемые,

Подскажите, пожалуйста, как конвертировать строку из iso-8859-1 в Windows 1251?

К сообщению приложен файл. Размер - 19Kb
27 сен 21, 13:59    [22376354]     Ответить | Цитировать Сообщить модератору
 Re: txt из 8859-1 в Windows 1251  [new]
of63
Member

Откуда:
Сообщений: 2
Kulakov Oleg,

Конвертировать можно
CPCONVERT - если в фоксе имеется соотв. кодовая страница источника
STRCONV - см. описание, и про региональный параметр
CHRTRAN - если руками создать два списка трансляции байтов "что и во что"
SYS(15) - почти как CHRTRAN, только список для трансляции д.б. в виде набора выходных байтов, в порядке ASCII-кодов байтов источника

Если первые два не подойдут, то последние два смогут.

Кстати, в примере строка 1 бесполезна для анализа (она изображена в какой-то неподходящей кодировке), надо побайтный список текста, в "HEX-виде"
28 сен 21, 12:56    [22376848]     Ответить | Цитировать Сообщить модератору
 Re: txt из 8859-1 в Windows 1251  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7919
Насколько я в курсе, кодировку iso-8859-1 обычно ставят в соответствие с 1252 (Win eng). Соответствие не полное, но, обычно работает. Так что, можно попробовать так

?CPConvert(1252, 1251, "Текст в кодировке 1252")
28 сен 21, 15:06    [22376926]     Ответить | Цитировать Сообщить модератору
 Re: txt из 8859-1 в Windows 1251  [new]
Kulakov Oleg
Member

Откуда:
Сообщений: 61
ВладимирМ
Насколько я в курсе, кодировку iso-8859-1 обычно ставят в соответствие с 1252 (Win eng). Соответствие не полное, но, обычно работает. Так что, можно попробовать так

?CPConvert(1252, 1251, "Текст в кодировке 1252")


Попробовал ваш вариант не получается, куча вопросительных знаков появилось.
Приложил файл.
В MS Worde открывается если выбрать кодировку Кириллица (ISO). Возможно я не так делаю.
Пожалуйста подскажите как можно решить проблему.

К сообщению приложен файл (tekst.txt - 73bytes) cкачать
2 окт 21, 12:53    [22378711]     Ответить | Цитировать Сообщить модератору
 Re: txt из 8859-1 в Windows 1251  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7919
iso-8859 - это обычная кодовая страница. Т.е. каждый символ кодируется одним байтом. В теории, это должно было бы решаться при помощи CPCONVERT(), но, к сожалению, в таблице поддерживаемых кодировок в FoxPro ее нет. Поэтому остаются делать "закат солнца вручную" Т.е. при помощи ChrTran() заменять одни ASCII-коды на другие. Примерно так получается

Все 255 символов я выписывать не стал, но общий принцип такой

lc8859 = ''
For i = 176 to 239
    lc8859 = m.lc8859 + Chr(i)
EndFor
lc8859 = m.lc8859 + Chr(161) + Chr(241)
lc1251 = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"
lc1251 = lc1251 + "абвгдежзийклмнопрстуфхцчшщъыьэюя"
lc1251 = lc1251 + "Ёё"

?Chrtran(lcFile,lc8859,lc1251)


lcFile = FileToStr("C:\MyDir\tekst.txt")
?ChrTran(m.lcFile, m.lc8859, m.lc1251)


Сама таблица кодировок iso-8859 легко ищется в интернете. Например, быстрый поиск дал мне вот эту страницу

Таблицы кодировок ASCII, CP1251 (windows1251), ISO-8859-5

Если лень искать, то можно просто сделать посимвольный разбор текста и для каждого символа посмотреть значение функции ASC()


Дальше просто остается аккуратно сформировать 2 строки из 66 символов (33 маленькие буквы + 33 большие буквы русского алфавита) и использовать ChrTran для преобразования файла. На первый взгляд, латинские буквы, цифры и прочие символы имеют одинаковый ASCII-код в обоих кодовых страницах. Но, для гарантии, можно, конечно, и все 255 символов так перекодировать
2 окт 21, 21:50    [22378772]     Ответить | Цитировать Сообщить модератору
 Re: txt из 8859-1 в Windows 1251  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7919
Сама таблица кодировок iso-8859 легко ищется в интернете.

Кстати, в википедии можно посмотреть

Сообщение было отредактировано: 2 окт 21, 21:47
2 окт 21, 21:52    [22378773]     Ответить | Цитировать Сообщить модератору
 Re: txt из 8859-1 в Windows 1251  [new]
Kulakov Oleg
Member

Откуда:
Сообщений: 61
ВладимирМ

Огромное Вам спасибо! Все получилось.
3 окт 21, 11:12    [22378838]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить