вставить utf-8 в форму | |
---|---|
Артём Автор Сообщений: 117 Дата регистрации: 23.04.2001 |
Идея такая. Скопировать текст из интернета. и вставить в форму в editBox. потом нажать кнопку и разобрать вставленное.
Я умею создать руками текстовый файл (через блокнот), вставить в него из буфера и потом все разобрать. использую такую строку
Проблема в том, что при вставке в мемо поле происходит порча того, что вставляется. во первых, ничего не читается, во вторых,
Исправлено 1 раз(а). Последнее : Артём, 08.12.21 10:08 |
Re: вставить utf-8 в форму | |
---|---|
ssa Сообщений: 13008 Откуда: Москва Дата регистрации: 23.03.2005 |
Ибо поле такого типа рассчитано на текст, а не на набор байтов. Для двоичных данных есть другие типы. Почитайте про Nocptrans. ------------------ Лень - это неосознанная мудрость. |
Re: вставить utf-8 в форму | |
---|---|
Taran Сообщений: 13626 Откуда: Красноярск Дата регистрации: 16.01.2008 |
Вероятно поможет если вставлять не напрямую в поле ввода, а через кнопку, в которой и прописать .parent.editbox.value=strco(_cliptext.....
|
Re: вставить utf-8 в форму | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:Лично я не понял до конца ни что и как вы делаете ("скопировать" - это скопировать руками или прочитать программно?), ни что вы при этом получаете, ни что вы хотите получить. Слова "разобрать вставленное" тоже, думаю, понятны только вам. Я, например, регулярно что-то копирую - руками - со страниц интернета, большинство страниц имеют именно такую кодировку, но никаких проблем со вставкой содержимого буфера обмена (Ctrl-V) в текстовые или эдитбоксы у меня нет. При этом я понимаю, что не все символы будут отображены так, как они видятся на сайте (ну, а как вы хотите?), но это зависит от собственно символов, характеристик шрифта эдитбокса, локализации и т.п. Можете привести конкретный пример последовательности ваших действий, пример "копируемого", что получается в эдитбоксе сейчас, а что вы хотите там видеть в итоге. --------
|
Re: вставить utf-8 в форму | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
utf-8 это вариант кодирования unicode (он так и расшифровывается - Unicode Transformation Format, 8-bit). Фоксовые визуальные элементы не работают с unicode - ни вставить туда такой текст без потерь (без преобразования к той или иной однобайтной кодировке), ни отобразить не получится никак.
Можно использовать какие-либо сторонние ActiveX компоненты, и тогда уже вполне можно будет получить unicode байтики хоть в utf-8, хоть в UTF-16LE, который в документации фокса для strconv называют UNICODE (wide characters). Если забыть про визуальные элементы, то данные из буфера обмена вполне можно прочитать и в unicode - но для этого нужно использовать WinAPI функции, т.к. _CLIPTEXT тоже работает лишь с текстом конвертированным в однобайтную кодировку "текущей кодовой страницы". При том он ещё и страдает от особенностей винды связанной с "синтетическими" форматами (Synthesized Clipboard Formats) - когда преобразование текста из Unicode в однобайтную кодировку зависит от раскладки клавиатуры в момент копирования текста, и тому подобным неочевидным вещам. Это для некоторых азиатских языков, когда ещё не было unicode, но компьютеры у них уже были, и в 256 возможных значений их алфавит ну никак не помещался. Для работы этой балалайки была нужна специальная "восточная" версия винды. Как оно эмулируется в более свежих версиях винды, где появилась возможность "локализации", и когда уже внутренне там юникод стал использоваться, я не в курсе... В общем если речь не идёт о японском, корейском, китайском языках и антикварных системах не умеющих в Unicode, то можно про DBCS забыть. en.wikipedia.org ------------------ WBR, Igor |
Re: вставить utf-8 в форму | |
---|---|
Артём Автор Сообщений: 117 Дата регистрации: 23.04.2001 |
О! Спасибо. При включенной русской раскладке все копируется. При английской визуально много символов заменяется на знаки вопроса. Еще , в процессе, был вариант вызывать
Исправлено 2 раз(а). Последнее : Артём, 09.12.21 07:42 |
Re: вставить utf-8 в форму | |
---|---|
Артём Автор Сообщений: 117 Дата регистрации: 23.04.2001 |
последовательность такая : руками ctrl-c в интернете ctrl-v в editBox Цель такого копирования - визуально проконтролировать правильность скопированных данных и передать в мою программу данные для дальнейшей обработки. Далее текст из EditBox программно обрабатывается. никаких проблем с обработкой правильного текста нет. |
Re: вставить utf-8 в форму | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата: Ну, я бы не сказал, что ВСЁ, но русские и латинские буквы, конечно, искажаться (как немецкие с умляутами) или превращаться в "вопросы" (как со всеми греческими), у вас не должны. Но остался вопрос - в каком месте вашего копирования вы используете STRCONV(*, 11)? |
Re: вставить utf-8 в форму | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Если речь идёт только про русский язык (ну и английский, само собой) то юникод не нужен. Для обхода проблемы с paste строк "с потерями" можно соорудить кнопку рядом с этим editbox и получать данные из буфера обмена програмно (используя WinAPI функции) - получать как раз в Unicode и потом уже конвертировать в однобайтовую 1251 кодировку при помощи strconv(..., 6, 1251, 1). Впрочем, для фокса вполне можно обойтись тем что научить пользователя переключаться на русский язык перед копированием текста из браузера или там из ворда/экселя. Тогда по сути вообще ничего не нужно делать
utf8 в буфер обмена практически никогда не попадёт (а попав - например если его с неправильно отобразившейся веб-страницы скопировать в этом вот нечитаемом виде - запросто исказиться по тем же самым причинам, по которым искажается и "читаемый" код скопированный при английской раскладке - и после такого он уже будет испорчен навсегда), и потому strconv(..., 11) тут не нужен. Это пригодиться если вдруг текстовый файл какой разобрать надо, или низкоуровневый результат HTTP запроса (да и то, если заранее известно что пришедшие данные именно в utf8 кодировке)... ------------------ WBR, Igor |
Re: вставить utf-8 в форму | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Дык эта. Наверное, можно присобачить принудительный переход на кириллицу перед началом копирования. А потом вернуть на ту раскладку, которая была до выполнения копирования. Исправлено 1 раз(а). Последнее : Simple777, 09.12.21 21:49 |
Re: вставить utf-8 в форму | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Как же ты собрался понимать что юзер собирается что-то скопировать неизвестно где
Да и произвольные переключения раскладки это жесть - за такое бить по рукам надо выдумщиков. Это как вирус, который при нажатии точки или запятой посылает нажатия кнопок "б", "л" и "я" Если юзеру разъяснить причину проблемы, то он обычно сам справляется с её обходом - увидел что буковки пропали, снова пошёл туда же и уже "правильно" скопировал - т.к. знает в чём дело. ------------------ WBR, Igor |
Re: вставить utf-8 в форму | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Ну нет так нет.
|
Re: вставить utf-8 в форму | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Я думаю, всё наоборот. Мне не требуется переключать язык, если я копирую из браузера в Фокс. Например, вот сайт в кодировке utf-8: www.flashscore.ru.com А вот обратная операция требует переключения в Фоксе на русский, если я копирую русские буквы из Фокса на сайт. Исправлено 1 раз(а). Последнее : akvvohinc, 10.12.21 00:45 |
Re: вставить utf-8 в форму | |
---|---|
Артём Автор Сообщений: 117 Дата регистрации: 23.04.2001 |
еще не до конца все доделано. эта функция была найдена для цепочки преобразований русского текста из интернета в DOS. Сейчас эти функции закомментированы. Возможно, и не пригодятся. |
© 2000-2024 Fox Club  |