Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Разбирался с функциями в VBS, нашёл интересную функцию транслита- подправил под нужды необука. Функцию писал не я-нашёл на просторах инета. В архиве функция и демо пример
Добавлено (11 Апреля 2016, 13:28) --------------------------------------------- Функция транслитерации по ГОСТ 16876-71 , думаю дополнить (переписать по своему) Транслитерация имен для загранпаспорта РФ Транслитерация адресной строки Транслитерация ISO 9 - 1995 ---Вобщем перепишу всё в одну функцию да и вообще можно переписать под любую литерацию вплоть до того что будут цифры вместо букв... может и пригодится кому то....
Изменено ГОСТ 7.79-2000 на ГОСТ 16876-71
Добавлено (11 Апреля 2016, 13:30) --------------------------------------------- Прямо шифровка какая то "Юстас Алексу..."
Вадим-я всё ж перепишу попозже по своему эту функцию- ну и с таблицами сверюсь-для меня есть определённый интерес хотя мне это и ненужно-может кому пригодится в необуке Кстати-затронул ты вопрос кодировок-может фунцию перекодировок отдельно написать..... есть поле для работы..
Ты яснее выражайся, от чего кругом? Ничего там особо сложного то нету. Кодировку файла можно определить по заголовку файла в хекс редакторе. Где то инфа есть, а можешь методом тыка сравнить первые байты в хекс редакторе. Определение кодировки текста как один из вариантов можно почитать здесь. Не хочешь читать хелп?
mishem понимаешь- когда только разбираешься с одной-двумя-всё понятно и легко можно разобрать и написать функцию, но когда кодировок несколько и "засунуть" в одну - плюс сложности с некоторыми (некоторые не определяются по первым байтам( нашёл инфу по ним - там волкИ от VBS описывают ситуацию)) - вот голова и кругом. Н у и я никогда особо не занимался этим ( ну знал что существует, знал что перекдировать что то надо когда то , знал что там байты и тд - и всё.Сейчас всё надо более досконально "прогнать" ну и я ж не гуру в VBS-е - тут тоже засада которую на ходу приходится преодолевать.Даже незнаю смогу ли всё в одном флаконе перемешать.Отдельными функциями переписать кодировку проще, а вот определение кодировки - сложнее..
Ну дерзай. Когда то ж надо от игрушек к серьезным вещам переходить. А то нащелкал никому не нужных функций. Давай, теперь делом займись. Не хочешь читать хелп?
mishem, я смотрю - ты уже не первый год с этими "кодировками" маешься. Если не государственный секрет конечно, чего такое творишь?
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
А я не только с кодировками маюсь, и с визуальным редактором HTML. Жду, мож когда нибудь путЁвый плагин сделают.
ЦитатаPeter ()
чего такое творишь
Да ничего. Периодически возвращаюсь к проекту который начал уже как года 3 наверно назад. Еще тогда хотел написать программу для удобного перевода справок. Но... Постоянно упираюсь в визуальный редактор HTML. Все что пробовал, не то...
в тёмную подвёл - эксплуататор перекодировку то легко написать-функций много уже написанных- а вот определение кодировки- сложнее..
Добавлено (13 Апреля 2016, 02:26) --------------------------------------------- есть на джаве-скрипт- но я как то хуже этот язык воспринимаю- пытался разобраться вроде всё понятно- а нейдёт
Добавлено (13 Апреля 2016, 02:38) --------------------------------------------- mishem а конкретно то что надо написать функцию перекодировки ? или функцию определения кодировки? ну и с HTML-ом я неочень знаком(практически никак) И если перекодировки- то что и во что
Добавлено (13 Апреля 2016, 02:40) --------------------------------------------- так может тебе просто функцию в чистом виде надо на vbs- так их полно разных
mishem а конкретно то что надо написать функцию перекодировки ? или функцию определения кодировки?
Определения кодировки. Перекодировка есть в плагине Петра zmFunctions.
Предположим есть файлы в кодировке ANCII которые нужно преобразовать в Utf-8, но среди них затесались файлы уже в кодировке UTF-8. Попробуй с помощью плагина zmFunctions перекодировать файл в кодировке UTF-8 в кодировку UTF-8. zmConvertString "AnsiToUtf8" "" ""
Вот для этого и нужно предварительное определение кодировки. Есть файлы в кодировке ANCII, но кодировка файла может быть Windows-1252. Вставишь туда просто текст в Windows-1251, будут крякозябры. Значит нужно не вставлять текст, а переписать его в Windows-1251.
Есть много программ которые автоматически определяют кодировку. Значит это как то возможно? К примеру та же "Штирлиц", или например вот этот ресурс. Не всегда точно, но с основной задачей практически справляется всегда.
Добавлено (13 Апреля 2016, 09:53) ---------------------------------------------
ЦитатаAS3856 ()
в тёмную подвёл - эксплуататор
:) Ну а как по другому? Сам предложил, я за язык не тянул:
ЦитатаAS3856 ()
может фунцию перекодировок отдельно написать..... есть поле для работы..
- приммерно понял,понимаю что можно написать кириллицей но файл в UTF-8 (или 1252)- необходимо в 1251 -такая прмерно задача ? И ещё программы типа "штирлиц" тоже нестоит задействовать- иначе придётся таскать за собой весь этот "хвост"( что конечно же не страшно - но как то выглядит не очень хорошо) Штирлиц конечно хороша- тогда нафига всё этоо мутить( ну не нравится мне таскать сторонние разработки в своих программах- это уж от безЪисходности. есть готовые функции определения UTF 8 и 1251 но немного переработать надо.. Тогда с с тебя уж потом визуальный редактор HTML
Добавлено (13 Апреля 2016, 10:26) --------------------------------------------- и ещё - если возможно не можешь ли скинуть файлы которые и надо перекодировать(определять кодировку) хотелось бы поглядеть на" это" ,и как будет функция отрабатывать чтоб не в" тёмную" писать пару тройку файлов -на них и буду оттачивать своё" мастерство"
Добавлено (13 Апреля 2016, 10:28) ---------------------------------------------
Цитатаmishem ()
Попробуй с помощью плагина zmFunctions перекодировать файл в кодировке UTF-8 в кодировку UTF-8.
если возможно не можешь ли скинуть файлы которые и надо перекодировать(определять кодировку)
Скачай например вот этот редактор. Это русик не законченный. Что б легче ориентироваться было.
Пишешь текст в файле, переходишь "Преобразовать > Кодировка текста". Или не пишешь текст, выставляешь кодировку, а после пишешь. После можешь выбрать "Вид > Шестнадцатеричный" и сравнить первые байты файлов в разных кодировках. То есть в принципе определить кодировку файла можно с помощью плагинов в NeoBook два таких я по крайней мере знаю.
возникнет много проблем, так как в разных кодировках в регистрозависимых буквах будут совпадения в этих байтах. То что в одно кодировке соответствует заглавной букве в другой будет равно прописной... Я бы сделал проще. Взял бы из текста участок допустим символов 30-40 в цикле из каждой кодировки в каждую его перекодировал. Потом в полученном массиве кодированных строк, проверил количество гласных согласных символов в словах. В человекопонятном тексте такой показатель в среднем одинаков. И более релевантный результат считал бы правильным. "Вы знаете, нам очень понравились все варианты, что вы прислали. Даже не знаем, что выбрать… А может попробуем объединить все три логотипа в один?"
Ты не понял. В ANCII заголовка нет. В Utf-8 c BOM первые байты EFBBBF в юникод с прямым порядком байт FFFE0000 с обратным 0000FEFF и т.д. Не хочешь читать хелп?
Ага просмотрел что речь идет не про текст, а про файлы. А про какие файлы идет речь? какой формат? "Вы знаете, нам очень понравились все варианты, что вы прислали. Даже не знаем, что выбрать… А может попробуем объединить все три логотипа в один?"
там "зубры" копья ломают в поисках решения этих задач ...
В VBS запросто может и не оказаться средств для решения этой задачи. Пробуй через плагин, т.е. Delphi или С++, в них ты будешь ограничен только "пониманием сути вопроса", а не возможностями. Хороший повод заняться реальным "делом", а не тратить время на "костыли".
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Есть вот решение такое -не моё нашёл на одном из сайтов, кто что скажет про такой метод ? актуально для UTF 8 ------------- Саму идею получения кодировки придумал не я, но и автора, к сожалению, сообщить сейчас уже не могу, так как это было порядка 4 лет назад и откуда я взял эту информацию - уже давно забылось. Автор предложил вариант определения и показал пример для 1-2 кодировок на языке Python. Простота его решения не оставила меня в стороне, и я развил её до желаемого результата. Суть идеи заключается в самих кодовых таблицах кодировок. Как известно, любая кодировка содержит свою кодовую таблицу и для каждого символа кодировки присвоено определенное значение. Таблицы кодировок я здесь показывать не буду, сейчас их найти в интернете достаточно просто. Принцип реализации следующий:
Создается переменная-массив для хранения результата "анализа" проверенного текста. Каждый элемент массива будет содержать результат для конкретной кодировки. Полученный на вход функции текст перебирается по символьно. От каждого символа берется ординал (значение этого символа) и сравнивается с диапазоном кодировки. Если значение выпадает на прописной (заглавный) символ, элементу массива, который хранит результат этой кодировки, прибавляется значение 1. Если значение выпадает на строчный (маленький) символ, элементу массива, который хранит результат этой кодировки, прибавляется значение 3. Та кодировка, точнее, тот элемент массива, который хранит результат о своей кодировке, который набрал больше всего баллов - вероятней всего и является исходной кодировкой.
Такой алгоритм справедлив для однобайтовых кодировок, таких как KOI-8, CP1251 (windows-1251) и других. Однако, для двухбайтовых кодировок (в моем случае UTF-8), такой подход выдаст ошибочный результат. Для начала я попытался решить этот вопрос путем прибавления для прописных символов - 5, для строчных - 7. Результат стал лучше, однако все равно ошибки распознавания присутствовали. После недолгих экспериментов, я вывел, что для верного определения UTF, при прописных символах должно прибавляться к результату 10, для строчных 14, то есть в 2 раза больше начального моего предположения. Тем не менее, для лучшего визуального понимания кода я для символов UTF оставил 5 и 7 соответственно и уже во время проверки эти значения увеличивал на 2 и прибавлял к результату. Вот в принципе и весь алгоритм. И без всяких лишних заморочек. Больше всего времени на реализацию этой функции у меня убилось конечно же на поиск кодовых таблиц и правильной расстановки диапазонов. Мало того, что на тот момент, когда я первый раз писал эту функцию, найти актуальную кодовую таблицу было достаточно трудно, так ещё диапазоны символов в них скачут как попало. Тем не менее, я тогда остановился на самых актуальных (и по сей день) кодировках: UTF-8, CP1251, KOI8-R, IBM866, ISO-8859-5 и MAC. Если вам недостаточно этих кодировок, вы можете на основе данного алгоритма дополнить код.
Добавлено (14 Апреля 2016, 21:59) --------------------------------------------- Ну а написать код по рассуждениям автора - не слишком сложно
Добавлено (14 Апреля 2016, 22:02) --------------------------------------------- часть кода от автора опуса " На питоне" """UTF-8""" if last_simb == 208 and (143 < simb_ord < 176 or simb_ord == 129): codepages['UTF-8'] += (utfupper * 2) if (last_simb == 208 and (simb_ord == 145 or 175 < simb_ord < 192)) \ or (last_simb == 209 and (127 < simb_ord < 144)): codepages['UTF-8'] += (utflower * 2)
Добавлено (14 Апреля 2016, 22:05) ---------------------------------------------
ЦитатаPeter ()
В VBS запросто может и не оказаться средств для решения этой задачи.
в лазарусе вроде есть модуль LConvEncoding Функция GuessEncoding может определить кодировку исходной строки (правда не для всех кодировок, вероятность где-то 70%) но с лазарусом давно завязал...
Если вам недостаточно этих кодировок, вы можете на основе данного алгоритма дополнить код.
AS3856, ты не понял главное - мишему нужно готовое решение в одну строчку (буквально), а не "информация к размышлению" или конструктор "сделай сам".
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
В vbs реализовать всё что автор там на питоне делал, но незнаю каков результат- хотя я тоже на этот путь посматриваю..
Добавлено (14 Апреля 2016, 22:11) --------------------------------------------- Peter- я раздумываю , я не говорю чтоб он писал то что я тут выложил- я просто незнаю правильно ли это будет Написать то я сам напишу,- но в одну строчку тут конечно неполучится, думаю строчек 10 (получится функция для необука)
Добавлено (14 Апреля 2016, 22:14) --------------------------------------------- Меня просто интересует Ваше мнение - имеет смысл выполнить это ? С UTF 8 не всё просто получается........
Тема кодировок вообще "темный лес", тут нужно знать вопрос от а до я, а для этого нужны время и, главное, стимул. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
то что расписал автор опуса о кодировке т.е. он то на питоне писал- я ж могу это в vbs
Добавлено (14 Апреля 2016, 22:30) --------------------------------------------- соответственно получится функция
Добавлено (14 Апреля 2016, 22:31) --------------------------------------------- - но я в сомнениях будет ли это нормально работать..
Добавлено (14 Апреля 2016, 22:32) --------------------------------------------- процент погрешности --???
Добавлено (14 Апреля 2016, 22:34) --------------------------------------------- - все непросто именно с UTF 8.. (есть правда двойная кодировка в утф 8 и утф 16 - но эти варианты нерассматриваю
Добавлено (14 Апреля 2016, 22:49) ---------------------------------------------
ЦитатаPeter ()
Пробуй через плагин, т.е. Delphi или С++,
Боюсь что я "недорос" до планиностроительства......