powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / кодировка в xml файле
13 сообщений из 13, страница 1 из 1
кодировка в xml файле
    #38046403
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такой код, который мне тут ранее подсказали. Этот код из xml позволяет получить курсор. Если в xml кодировка указана 1251 то все работает, а если 1252 то в курсор выводятся непонятные символы. Как исправить ситуацию, чтобы и при кодировке 1252 выводились нормальные данные?

Код: sql
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.
CREATE cursor tmp ( ;
	id I, ;
	id_sch I, ;
	vpolis I, ;
	spolis C(3), ;
	npolis C(16), ;
	fam C(30), ;
	im C(30), ;
	ot C(30), ;
	dr t, ;
	w I,;
	smo C(5), ;
	smo_db_opl C(6),;
	smo_in_fom C(6),;
	stat I, ;
	name_error C(50), ;
	kol_strax I, ;
	kol_uslugi N(5,2), ;
	kol_kd N(5,2), ;
	sumv N(10, 2), ;
	code_mo C(6), ;
	name_mo C(50), ;
	smo_tmp C(5)) 

	XMLTOCURSOR(cfile, "tmp", 512+8192)
...
Рейтинг: 0 / 0
кодировка в xml файле
    #38046599
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима1991,

А если потом курсор обработать (сам не пробовал :)) ):
Расположенная в папке Visual FoxPro Tools\Cpzero, Cpzero.prg удаляет метку кодовой страницы из любого файла, который имеет табличную структуру файловая структура. После удаления метки Cpzero добавляет другую метку, которую вы определяете.

Обычно вы используете Cpzero с файлами других платформ или более ранних версий FoxPro. Если эти файлы не имеют метки кодовой страницы, когда вы их открываете, Visual FoxPro подсказывает вам кодовую страницу. Если вы неверно определили кодовую страницу,и данные в файлах отображаются неправильно, скорректируйте кодовую страницу, используя Cpzero.

DO Cpzero [WITH "filename"[, codepage_number]]

Параметры
filename
Определяет имя файла и должно быть ограничено одинарными или двойными кавычками. Если filename не включено, отображается диалоговое окно определения местоположения файла.

codepage_number
Определяет желаемый номер кодовой страницы. Если параметр не включен, будет показано диалоговое окно выбора кодовой страницы. Примечание:
Перед запуском Cpzero на таблице убедитесь, что она закрыта.

Пример
* Удалите кодовую страницу из MYFILE.DBF и установите новую кодовую страницу равной 437
*
DO Cpzero WITH 'MYFILE.DBF',437

Смотри также
CPCONVERT( ) Function
CPCURRENT( ) Function
CPDBF( ) Function
GETCP( ) Function
Utility Programs
SET CPDIALOG Command
SET NOCPTRANS Command
...
Рейтинг: 0 / 0
кодировка в xml файле
    #38047157
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jonny540,
Код: sql
1.
DO Cpzero [WITH "filename"[, codepage_number]]

это нужно писать после создания курсора?
...
Рейтинг: 0 / 0
кодировка в xml файле
    #38047683
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос в том, как FoxPro читает XML и что есть в XML. В самом XML есть какое-либо указание на то, в какой кодовой странице он сформирован? Может быть, проще будет сконвертировать содержимое XML. Как-то так

Код: sql
1.
XMLTOCURSOR(CPConvert(1252, CPCurrent(), cfile), "tmp", 512+8192)
...
Рейтинг: 0 / 0
кодировка в xml файле
    #38047729
Beresnev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в какой кодировке создается курсор tmp? Я бы попробовал CREATE CURSOR tmp CODEPAGE=1252 (.....).
Вместо XMLTOCURSOR можно использовать объект XMLAdapter. Он имеет возможности управлять кодовыми страницами на лету
при выгрузке XML-данных в курсор.
Ну и STRCONV() не следует забывать.
...
Рейтинг: 0 / 0
кодировка в xml файле
    #38048550
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима1991Jonny540,
Код: sql
1.
DO Cpzero [WITH "filename"[, codepage_number]]

это нужно писать после создания курсора?Желательно после.
...
Рейтинг: 0 / 0
кодировка в xml файле
    #38048615
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ, В XML содержится следующее, ну тегов конечно побольше для примера один взял:
Если оставить такую кодировку, то при создании курсора или таблицы абракадабка получается, а если написать 1251 то нормально все
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
<?xml version = "1.0" encoding="Windows-1252" standalone="yes"?>
<VFPData>
	<pacient_strax>
		<id>28141986</id>
		<id_sch>201210  050130201210</id_sch>
		<vpolis>1</vpolis>
		<spolis>МК</spolis>
		<npolis>000076189</npolis>
		<fam>Сергеев</fam>
		<im>Михаил</im>
		<ot>Игоревич</ot>
		<dr>1978-10-15T00:00:00</dr>
		<w>2</w>
		<smo>05501</smo>
		<stat>0</stat>
		<name_error>Отсутствует в СРЗ</name_error>
		<kol_strax>1</kol_strax>
		<kol_uslugi>4.00</kol_uslugi>
		<kol_kd>.00</kol_kd>
		<sumv>1269.45</sumv>
		<code_mo>050130</code_mo>
		<name_mo>Диагностика</name_mo>
	</pacient_strax>
</VFPData>
...
Рейтинг: 0 / 0
кодировка в xml файле
    #38048821
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Beresnev, с курсор-адаптером не сталкивался никогда.. для текущего примера хотелось бы изменить этот момент, а то не хочется работающую программу исправлять заново.
...
Рейтинг: 0 / 0
кодировка в xml файле
    #38048854
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима1991ВладимирМ, В XML содержится следующее, ну тегов конечно побольше для примера один взял:
Если оставить такую кодировку, то при создании курсора или таблицы абракадабка получается, а если написать 1251 то нормально все
Код: sql
1.
<?xml version = "1.0" encoding="Windows-1252" standalone="yes"?>


А собственно содержимое файла действительно в кодировке 1252? Или это просто "бантик", а содержимое в кодировке 1251? Для проверки, попробуйте открыть XML как текстовый файл, но меняя кодовую страницу. Как-то так

Код: sql
1.
2.
modify file MyFile.xml as 1251
modify file MyFile.xml as 1252



И посмотрите, при какой кодировке содержимое будет "читабельное", а при какой - нет
...
Рейтинг: 0 / 0
кодировка в xml файле
    #38048872
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ, я ж вам говорю если писать 1251 то все нормально, просто нам этот файл передают из ФОМСа и изначально он в кодировке 1252. Сейчас проверил, если писать так: modify file MyFile.xml as 1251 то нормально все, а если так modify file MyFile.xml as 1251
modify file MyFile.xml as 1252 то символы непонятные.. Просто чтобы каждый раз вручную не менять кодировку хотелось бы программно заложить чтобы читало в 1252 правильно
...
Рейтинг: 0 / 0
кодировка в xml файле
    #38048881
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
блин во втором случае так modify file MyFile.xml as 1252
...
Рейтинг: 0 / 0
кодировка в xml файле
    #38048948
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего не понял. Файл реально сформирован в кодовой странице 1251 (win rus), но программа, его сгенерившая поставила не корректное значени 1252 (win eng)?

Ну, по-простому, указанная кодировка в атрибуте encoding соответствует реальной кодировке содержимого? Безотносительно того, кто как читает.
...
Рейтинг: 0 / 0
кодировка в xml файле
    #38049700
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ, Понимаете, я не знаю как формируется этот файл. Его в таком виде как я выложил образец дают нам из ФОМСа, а мы по нему потом отчеты получаем и сверяем ошибки, корректируем данные в базе. Когда мы получаем файл там указано бывает 1252, а при работе я меняю кодировку на 1251, чтобы так не менять хотел программно заложить механизм чтобы нормально работал, если в нем указана 1252 кодировка
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / кодировка в xml файле
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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