Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
преобразовать кодировку DOS->win
 
Можно ли на VBScript конвертировать содержимое файла в другую кодировку? Что для этого использовать? Нагуглил функции, может кто-нибуть уже писал что-то подобное?
Цитата
Declare Function CharToOem     Lib "user32" Alias "CharToOemA" _
  (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Declare Function OemToChar     Lib "user32" Alias "OemToCharA" _
  (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Declare Function CharToOemBuff Lib "user32" Alias "CharToOemBuffA" _
  (ByVal lpszSrc As String, ByVal lpszDst As String, ByVal cchDstLength As Long) As Long
Declare Function OemToCharBuff Lib "user32" Alias "OemToCharBuffA" _
  (ByVal lpszSrc As String, ByVal lpszDst As String, ByVal cchDstLength As Long) As Long
 
http://www.visual.2000.ru/develop/ms-vb/tips/9801.htm
 
Все верно Эти функции работают правильно, по крайней мере у меня на VB6. Будут ли работать на VBS не знаю, так как не силен. Там по моему надо что-то через Set O = CreateObject("") Вобщем где то там. ;)
 
Можно при помощи батника
Код
@echo off
for /f "tokens=*" %%i in ('type text-866.txt') do (
   call:convert
   echo %%i>>text-1251.txt
   chcp 866 >nul
)
goto:eof
:convert
chcp 1251 >nul
 
01MDM, отличный способ.
А в чем скрытый смысл вызова
call:convert
?
Можно же просто взять и позвать явно
chcp 1251 > nul
?
 
Как передать значение из f.ReadAll  в  l_sSource?
Код
      Dim l_lReturn as Long 
Dim l_sSource as String 'исходный текст 
Dim l_sDestination as String 'возвращаемый текст 
l_lReturn = oemtochar(l_sSource, l_sDestination)


Код
   Const ForReading = 1, ForWriting = 2
   Dim fso, f 
   Set fso = CreateObject("Scripting.FileSystemObject") 
   Set f = fso.OpenTextFile("c:\testfile.txt", ForReading) 
   ReadAllTextFile =   f.ReadAll 
   f.close


Можно ли читать и писать один файл, как?
 
quasitron, извиняюсь

Цитата
ksiva пишет:
А в чем скрытый смысл вызова call:convert ? Можно же просто взять и позвать явно chcp 1251 > nul ?

Сложно объяснить, т.к на интуитивном уровне. Но в цикле вызов chcp не приносит результатов. Сначала я сделал скрипт для вывода в файл "штатных" программ (ping, systeminfo, ipconfig и т.д), а потом просто адаптировал под перекодировку файла. Так что все что покажет:
Код
for /l %%i in (0,1,1361) do (chcp %%i >nul && еcho %%i >>codelist.txt)

Можно перекодировать.

Упс, конечно не 1361, а по крайней мере 28***
 
Для этого есть Декомпиляторы, диссамблеры и Resouse Editors :!:
 
Подскажите что не так в этом скрипте?
Код
Dim l_lReturn as Long, l_sSource as String, l_sDestination as String
  Const ForReading = 1, ForWriting = 2 
   Dim fso, f 
   Set fso = CreateObject("Scripting.FileSystemObject") 
   Set f = fso.OpenTextFile("c:\print.txt", ForReading) 
   l_sSource =   f.ReadAll 
f.close 
   l_sDestination = Space(Len(l_sSource)) 
   l_lReturn = oemtochar(l_sSource, l_sDestination) 
   Set f = fso.OpenTextFile("c:\print.txt", ForWriting, True) 
   f.write l_sDestination 
'   l_sDestination = f.Write 
f.close
Страницы: 1
Читают тему