Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Декодер windows1251->utf8 и по возможности на оборот нужно декодировать текст прямо в программе. может есть vb или js скрипт какой то, очень нужно декодировать текст
Rush скажи если знаешь как при перекодировании Win1251 файла через ADODB из потока ADODB.Stream не записывать в файл первые 3 байта BOM в UTF, через .Position=3 чето не выходит, пихаю его перед .SaveToFile он байты потока обрезает, но файл портится, а кодировка файла показывается как utf-16LE, че за... ? Голова уже не соображает...
Dim oFS : Set oFS = CreateObject( "Scripting.FileSystemObject" ) Dim sFFSpec : sFFSpec = oFS.GetAbsolutePathName(FileIn) Dim sTFSpec : sTFSpec = oFS.GetAbsolutePathName(FileOut) Dim oFrom : Set oFrom = CreateObject( "ADODB.Stream" ) Dim sFrom : sFrom = "Windows-1251" Dim oTo : Set oTo = CreateObject( "ADODB.Stream" ) Dim sTo : sTo = "utf-8"
If oFS.FileExists( sTFSpec ) Then oFS.DeleteFile sTFSpec
Добавлено (30 Октябрь 2009, 05:03) ---------------------------------------------
Quote (Alien)
в форму нужно перееодировать
Сохрани в файл что нужно перекодировать, а лучше покажи на примере, какую именно строку Win1251 надо перекодировать в utf, складывается ощущение что ты путаешь UTF кодировку и преобразования URL-адреса
Добавлено (30 Октябрь 2009, 05:58) ---------------------------------------------
Quote (YURIY)
И такой вопрос: реально ли узнать программно - кодировка некоторого файла utf-8 или нет?
можно ли как-то сделать сохранение файла в utf-8 БЕЗ сигнатуры?
Одними средствами adodb.stream у меня не получилось. Но я в нем не спец.
Quote (YURIY)
И такой вопрос: реально ли узнать программно - кодировка некоторого файла utf-8 или нет?
А это уже в конфликте с первым вопросом. Если без сигнатуры, то придется сравнивать на соответствие кодировке utf-8 кусок файла, и ошибки гарантированы. А также много строк кода. А с сигнатурой, как сам понимаешь, читаются первые три байта.
Quote (DEMBEL)
Rush скажи если знаешь как при перекодировании Win1251 файла через ADODB из потока ADODB.Stream не записывать в файл первые 3 байта BOM в UTF, через .Position=3 чето не выходит
Как уже сказал - тоже не вышло. У меня твой скрипт вообще не работает - типы данных на лету не должны, в принципе, меняться.
Вот для перекодировки переменных, но не хочет в переменную передаваться текст в utf-8. Почему? У меня голова не варит. Юникод нормально, кои8 тоже.
Code
txt="Текст, который нужно перекодировать" with createobject("adodb.stream") .type=2 .charset="windows-1251" .open .writetext txt .position=0 .charset="koi8-r" outtxt=.readtext .close end with msgbox outtxt
Сообщение отредактировано Rush - Пт, 30 Октября 2009, 10:18
ну понятно. Мой проект по ссылке выше перекодирует твою строчку правильно. Поэтому если тебе требуется перекодировать только одну строку текста прямо в проекте, то я могу немного поправить функцию для этого, а если текст будет многострочный то по любому придется вначале сохранять в файл, т.к. многострочную переменную передать в скрипт проблематично, и перекодировать уже его - для этого используй мой проект. Как задавать вопросы
А это уже в конфликте с первым вопросом. Если без сигнатуры, то придется сравнивать на соответствие кодировке utf-8 кусок файла, и ошибки гарантированы. А также много строк кода. А с сигнатурой, как сам понимаешь, читаются первые три байта.
Странно. Ну тогда открой эту функцию в редакторе и замени весь код в ней на этот:
Code
Dim oFS : Set oFS = CreateObject("Scripting.FileSystemObject") Dim sFFSpec : sFFSpec = oFS.GetAbsolutePathName("[%1]") Dim sTFSpec : sTFSpec = oFS.GetAbsolutePathName("[%2]") Dim oFrom : Set oFrom = CreateObject("ADODB.Stream") Dim sFrom : sFrom = "[%3]" Dim oTo : Set oTo = CreateObject("ADODB.Stream") Dim sTo : sTo = "[%4]"
If oFS.FileExists(sTFSpec) Then oFS.DeleteFile sTFSpec
Ээ... ты чтото не так делаешь. Еще похоже что как будто неверно выставлен тип функции, не VBScript, а какой-то другой. Проверь тип функции, открой ее в блокноте, в строке Language должно быть VBScript:
{NeoBook Function} Version=5.60 Language=VBScript Comment=VBScript function to decode text files to another charset. Param=[%1]|FileName|Source File path: Param=[%2]|FileName|Destination File path: Param=[%3]|Text|Source File charset: Param=[%4]|Text|Destination File charset: {End} Dim oFS : Set oFS = CreateObject("Scripting.FileSystemObject") Dim sFFSpec : sFFSpec = oFS.GetAbsolutePathName("[%1]") Dim sTFSpec : sTFSpec = oFS.GetAbsolutePathName("[%2]") Dim oFrom : Set oFrom = CreateObject("ADODB.Stream") Dim sFrom : sFrom = "[%3]" Dim oTo : Set oTo = CreateObject("ADODB.Stream") Dim sTo : sTo = "[%4]"
If oFS.FileExists(sTFSpec) Then oFS.DeleteFile sTFSpec
Ну Peter же обьяснил что к чему. В системе активен какой-то дебаггер, и NB думает что ее щас будут ломать. Не удалось выявить на какую программу ругается? Как задавать вопросы
надо бы посмотреть у тебя на компе список активных процессов и всех системных служб. щас накидаю скриптик, пришлешь мне отчет его работы. Как задавать вопросы