2 / 2 / 1
Регистрация: 23.12.2009
Сообщений: 57
1

Корректное считывание строк из файла вне зависимости от кодировки и замена в них русских букв на английские

25.12.2015, 21:56. Показов 954. Ответов 3
Метки нет (Все метки)

Доброго времени суток !
Делаю программу, которая анализирует содержимое текстовых файлов. Это файлы настройки для некоторой программы и необходимо проверять чтобы настройки были одинаковые у всех пользователей.
но это не суть.. При разработке программы возникло две проблемы
1) в настроечных файлах вместо английской буквы а , может быть русская а. => можно ли считывать информацию с файла заменяя русские буквы на подобные им английские ?
2) настроечные файлы на линуксе и винде в разных кодировках соответственно если запустить прогу на винде линуксовские файлы читаются не так как нужно (по-моему в линуксе utf-8 а в винде 1251). Есть ли возможность как-то считывать информацию в этом случае?

Заранее благодарен если кто-нибудь что-то знает и подскажет
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.12.2015, 21:56
Ответы с готовыми решениями:

Считывание из файла русских букв
Здравствуйте, есть вот такой код с английским алфавитом работает на ура, но если символы русские...

Из русских букв в английские
написал код,который если написать руддщ запишет как Hello я хочу каким то невероятным образом...

Замена русских символов на английские
Как сделать так чтобы при записи в файл русские символы заменяются на английские и наоборот?

Транслятор русских букв в английские
Здравствуйте. в общем хочу сделать что бы русские буквы воводились на дешевых 1602 подобных ЛСД...

3
Покинул форум
4267 / 1266 / 330
Регистрация: 07.05.2015
Сообщений: 2,546
26.12.2015, 17:49 2
Встречный вопрос: если "делаете" программу на каком-то высокоуровневом языке, не проще ли то, о чем спрашиваете, на этом языке реализовать?

Не по теме:

Также совершенно неясным остается что значит "настроечный файл"? Если имелись в виду конфигурационные файлы или файлы настроек, то с лексикой все же нужно быть более осторожным.

Непосредственно по теме. Вне зависимости кодировки с помощью VBScript файл можно прочитать так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Function GetContent(objFile)
  Dim objSize, objBuff, objData
  Dim strSign
  Dim blnUnic
  
  With CreateObject("Scripting.FileSystemObject")
    If Not .FileExists(objFile) Then
      WScript.Echo "File not found."
      Exit Function
    End If
    
    objFile = .GetAbsolutePathName(objFile)
    objSize = .GetFile(objFile).Size
    
    If objSize = 0 Then
      WScript.Echo "File has null length."
      Exit Function
    End If
    
    With CreateObject("SAPI.SpFileStream")
      .Open objFile, 0
      .Read objBuff, 4
      .Close
    End With
    
    For i = 1 To LenB(objBuff)
      strSign = strSign & Hex(AscB(MidB(objBuff, i, 1)))
    Next
    
    If InStr(strSign, "EFBBBF") Or _
       InStr(strSign, "FFFE") Or _
       InStr(strSign, "FFFE00") Or _
       InStr(strSign, "FEFF") Then
      blnUnic = True
    End If
    
    Set objData = .OpenTextFile(objFile, 1, False, blnUnic)
    WScript.Echo objData.ReadAll
    objData.Close
  End With
End Function
Граблями здесь будет символ конца строки в различных системах.
Что до замены букв кириллицы, совпадающих по начертанию с буквами латинского алфавита, вряд ли кто подскажет решение даром.EFBBBF
1
2 / 2 / 1
Регистрация: 23.12.2009
Сообщений: 57
26.12.2015, 17:54  [ТС] 3
Небольшая поправочка... Из кодировки KOI-8r

Добавлено через 5 минут
По замене русских на английские нашёл способ. Создать два массивы однотипных букв (два штуки), создать функцию по определению буквы и замене...информации в инете много оказалось..а по поводу языка нужен именно js.. Спасибо за ответ, буду разбираться
0
Эксперт WindowsАвтор FAQ
17842 / 7577 / 889
Регистрация: 25.12.2011
Сообщений: 11,316
Записей в блоге: 17
29.12.2015, 21:58 4
В помощь инфа из одного моего проекта:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
    ' Masked list
    aMask(&H50) = "r"   'Pp
    aMask(&H70) = "r"
    aMask(&H49) = "L"   'Ii1
    aMask(&H69) = "L"
    aMask(&H31) = "L"
    aMask(&H30) = "o"
    aMask(&H410) = "a"  'Аа
    aMask(&H430) = "a"
    aMask(&H412) = "b"  'Вв
    aMask(&H432) = "b"
    aMask(&H421) = "c"  'Сс
    aMask(&H441) = "c"
    aMask(&H415) = "e"  'Ее
    aMask(&H435) = "e"
    aMask(&H41D) = "h"  'Нн
    aMask(&H43D) = "h"
    aMask(&H406) = "L"  'Іі
    aMask(&H456) = "L"
    aMask(&H41A) = "k"  'Кк
    aMask(&H43A) = "k"
    aMask(&H41C) = "m"  'Мм
    aMask(&H43C) = "m"
    aMask(&H41E) = "o"  'Оо
    aMask(&H43E) = "o"
    aMask(&H420) = "r"  'Рр
    aMask(&H440) = "r"
    aMask(&H422) = "t"  'Тт
    aMask(&H442) = "t"
    aMask(&H418) = "u"  'Ии
    aMask(&H438) = "u"
    aMask(&H425) = "x"  'Хх
    aMask(&H445) = "x"
    aMask(&H423) = "y"  'Уу
    aMask(&H443) = "y"
В скобках - код символа, полученный через AscW().
За отсутствием времени большим помочь не могу.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.12.2015, 21:58
Помогаю со студенческими работами здесь

Функция по переводу в переменной русских букв в английские
Есть переменная в которой могут быть буквы и цифры, нужно проверить ее на предмет наличия русских...

Из массива строк выделить подстроки состоящие из русских букв, затем найти среди них самую котороткую
Продолжение задания: В строке, содержащей самую коротку подстроку(из условия) - русские буквы в...

Изменение имя учетной записи (с русских букв на английские)
Добрый вечер. Извиняюсь заранее, если повторяюсь темой. Но так и не смог найти вразумительного...

Корректное отображение русских букв.
Столкнулся с проблемой корректного отображения русских букв. Раньше для того что бы буквы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru