Текстовый файл Dos кодировка
Модератор: Naeel Maqsudov
У меня есть набор текстовых файлов в dos кодировке. При их обработке мне надо их открывать в нормальной кодировке. Есть ли какие-т возможности сделать это? Может параметр при открытиии файла...
Если использовать метод OpenText (файл открывается в виде Workbook), то в нем можно указать параметр Origin:=xlMSDOS
Всякое решение плодит новые проблемы.
я открываю OpenTextFile в VBA(в базе Access), а там можно выбирать только парметры:Genyaa писал(а):Если использовать метод OpenText (файл открывается в виде Workbook), то в нем можно указать параметр Origin:=xlMSDOS
TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
- пробовала использовать все параметры, но открывает одинаково закорючками ((
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
" писал(а):в нормальной кодировке

Полагаю, имелась в виду win-1251 (rus)
Параметра такого для VBA нет, но ничто не мешает после считывания перекодировать текст.
Наберите в поиске этого форума перекодир* - получите кучу примеров
А! Так это Access... с Access не работаю так много, чтобы что-либо советовать.Doggas писал(а):я открываю OpenTextFile в VBA(в базе Access), а там можно выбирать только парметры:
TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
- пробовала использовать все параметры, но открывает одинаково закорючками ((
Всякое решение плодит новые проблемы.
Нашла в других темах как можно перекодировать строку:
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,
потом использую эти функции:
sAnsi = String(Len(s), Chr(0))
OemToChar s, sAnsi
s1 = sAnsi
но проблема! s - строка с закарючками, а sAnsi становится квадратиками (а при первой прогонке все нормально перевел в текст). почему так получилось?
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,
потом использую эти функции:
sAnsi = String(Len(s), Chr(0))
OemToChar s, sAnsi
s1 = sAnsi
но проблема! s - строка с закарючками, а sAnsi становится квадратиками (а при первой прогонке все нормально перевел в текст). почему так получилось?
-
- Сообщения: 375
- Зарегистрирован: 31 авг 2007, 03:06
не перекодировались русские буквы.
Включите РУССКИЙ язык (раскладку клавиатуры) и прогоните ещё раз. Получилось?..
можно попробовать изменить в реестре - вот регфайлик: Внимание! 1) Все операции с реестром выполняются на собственный страх и риск. 2) после применения надо перегруить комп
Включите РУССКИЙ язык (раскладку клавиатуры) и прогоните ещё раз. Получилось?..
можно попробовать изменить в реестре - вот регфайлик:
Код: Выделить всё
REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"1250"="c_1251.nls"
"1251"="c_1251.nls"
"1252"="c_1251.nls"
-
- Сообщения: 526
- Зарегистрирован: 04 фев 2007, 18:37
- Откуда: Сургут
- Контактная информация:
Здравствуйте Doggas.
такая конструкция работает
Евгений.
Код: Выделить всё
Private Declare Function CharToOem Lib "user32" Alias "CharToOemA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Private Declare Function OemToChar Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long 'конвертируем строку в win-кодировку.
Function dosToWin(sourstr$) As String
dosToWin = Space$(Len(sourstr))
OemToChar sourstr, dosToWin
End Function
Function winToDos(sourstr$) As String
winToDos = Space$(Len(sourstr))
CharToOem sourstr, winToDos
End Function
Евгений.