Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/56: Рейтинг темы: голосов - 56, средняя оценка - 4.57
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648

Как определить кодировку текста с кириллицей

10.02.2016, 07:47. Показов 11889. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеем коротенький текстовый файл. Грузим его (вставляем кусок через буфер обмена) в TextBox. Получаем вместо кириллицы "кракозябры". Как определить кодировку текста с кириллицей и изменить её.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.02.2016, 07:47
Ответы с готовыми решениями:

Как изменить кодировку текста?
Мне нужно прочить файл использую My.Computer.FileSystem.ReadAllText() но оно мне возвращает текст из файла не знаю в какой кодировке, мне...

Как получить кодировку текста?
Доброго всем времени. Есть строка: D0D6E5F8DD06 (6D5E8FDD60) Знаю результат: VK.com Как получить кодировку? Это из смс, пробовал...

Как автоматически определить кодировку при открытии текстового файла?
Есть прорамма типа блокнот. Для текста используется RTB. После открытия файла у пользователя есть возможность поменять кодировку в...

33
34 / 34 / 6
Регистрация: 24.11.2015
Сообщений: 330
10.02.2016, 08:19
Код для определение кодировку текста при использовании класса StreamReader
VB.NET
1
2
3
Dim put as string="D:\123.txt"
Dim text As New StreamReader(put, System.Text.Encoding.ASCII)
MessageBox(text)
1
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
10.02.2016, 09:40  [ТС]
в инструкции
Цитата Сообщение от Khaker_tt Посмотреть сообщение
MessageBox(text)
исключение: MessageBox является типом и не может использоваться как выражение.
0
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
10.02.2016, 17:39
Khaker_tt, StreamReader не определяет кодировку, а считывает данные в указанной кодировке. Чтобы определить кодировку файла, нужно искать сигнатуру оной (Encoding.UTF8.GetPreamble(), например) или использовать сторонние библиотеки. Можно также задействовать System.Management.Automation:
VB.NET
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
42
43
44
45
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Management.Automation
 
Namespace CyrillicData
  Friend NotInheritable Class frmMain
    Inherits Form
    Public Sub New()
      InitializeComponent()
    End Sub
 
    Private txtText As TextBox
 
    Private Sub InitializeComponent()
      Me.txtText = New TextBox() With { _
        .Dock = DockStyle.Fill, _
        .Multiline = True _
      }
      Me.ClientSize = New Size(300, 210)
      Me.Controls.Add(Me.txtText)
      Me.FormBorderStyle = FormBorderStyle.FixedSingle
      Me.StartPosition = FormStartPosition.CenterScreen
      Me.Text = "CyrillicData"
      AddHandler Me.Load, AddressOf frmMain_Load
    End Sub
    
    Private Sub frmMain_Load(ByVal sender As Object, ByVal e As EventArgs)
      Using ps As PowerShell = PowerShell.Create()
        ps.AddScript("Get-Content E:\sandbox\cyrillic_test.txt -Raw")
 
        For Each o As PSObject In ps.Invoke()
          txtText.Text = o.ToString()
        Next
      End Using
    End Sub
  End Class
 
  Friend NotInheritable Class Program
    <STAThread> _
    Shared Sub Main()
      Application.EnableVisualStyles()
      Application.Run(New frmMain())
    End Sub
  End Class
End Namespace
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18240 / 14154 / 5366
Регистрация: 17.03.2014
Сообщений: 28,841
Записей в блоге: 1
10.02.2016, 23:55
Цитата Сообщение от greg zakharov Посмотреть сообщение
Можно также задействовать System.Management.Automation
Насколько я знаю команда Get-Content не умеет определять кодировку текста. Для теста я создал файл в кодировке koi8-r с русским текстом и он неправильно прочитался.

Цитата Сообщение от greg zakharov Посмотреть сообщение
Чтобы определить кодировку файла, нужно искать сигнатуру оной (Encoding.UTF8.GetPreamble(), например) ...
Стандартные классы работы с потоками это и так делают. Нет смысла повторять их работу.

Цитата Сообщение от greg zakharov Посмотреть сообщение
Чтобы определить кодировку файла нужно ... использовать сторонние библиотеки.
Я сторонник данного решения. Предпочитаю Mozilla Universal Charset Detector. С её помощью можно написать функцию определения кодировки которую затем передавать стандартным классам работы с текстовыми файлами.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Function DetectFileEncoding(fileName As String) As Encoding
 
    Dim buf() As Byte
    ReDim buf(12000-1)
    Dim length As Integer
    Using fstream As FileStream = File.OpenRead(fileName)
        length = fstream.Read(buf, 0, buf.Length)
    End Using
    
    Dim d As New Ude.CharsetDetector()
    d.Feed(buf, 0, length)
    d.DataEnd()
    Return Encoding.GetEncoding(d.Charset)
 
End Function
Цитата Сообщение от jkrnd Посмотреть сообщение
Имеем коротенький текстовый файл. Грузим его (вставляем кусок через буфер обмена) в TextBox.
Хм. А зачем грузить текстовый файл через буфер обмена?
4
11.02.2016, 10:35

Не по теме:

OwenGlendowerУлыбнуло.

0
11.02.2016, 12:28

Не по теме:

Цитата Сообщение от greg zakharov Посмотреть сообщение
Улыбнуло.
Что именно?

0
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
08.11.2017, 19:03
OwenGlendower, функция очень полезная, помогите переделать DetectFileEncoding для набора символов, а не для файла.

Чтобы использовать после такого:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
      Dim client As New System.Net.WebClient()
        '   Download URL
        Dim uri As New Uri("http://cyberforum.ru")
        Dim dbytes As Byte() = client.DownloadData(uri)
        Dim htmlcod As String
 
        '   Кодировка по умолчанию
        htmlcod = System.Text.Encoding.Default.GetString(dbytes)
        '  Далее у меня возникает ошибка
        '  Значение типа Byte() невозможно преобразовать в String
        TextBox1.Text = DetectFileEncoding(dbytes)
0
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
08.11.2017, 22:57  [ТС]
greg zakharov, куда вставить предложенный Вами в посте#4 код чтобы проверить его работу? В форму? В модуль?
Если можно, приведите пример его использования для определения кодировки текстового файла.

Добавлено через 15 минут
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Предпочитаю Mozilla Universal Charset Detector
по указанной ссылке скачал файл ude.csharp.1.1.0.nupkg и как его использовать, чтобы функция
VB.NET
1
Function DetectFileEncoding(fileName As String) As Encoding
заработала?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18240 / 14154 / 5366
Регистрация: 17.03.2014
Сообщений: 28,841
Записей в блоге: 1
08.11.2017, 23:08
Цитата Сообщение от jkrnd Посмотреть сообщение
greg zakharov, куда вставить предложенный Вами в посте#4 код чтобы проверить его работу?
Решение приведенное greg zakharov увы не решает задачу определения кодировки. Во всяком случае в универсальном смысле. Как я уже писал выше тест с файлом в кодировке KOI8-R этот код не прошел.

Цитата Сообщение от jkrnd Посмотреть сообщение
по указанной ссылке скачал файл ude.csharp.1.1.0.nupkg и как его использовать
Нужно не качать файл, а установить пакет в проект с помощью консоли или UI.
1
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
08.11.2017, 23:25
Пакет поставился легко.
В моем случае все символы в Dim dbytes, пжл, помогите с функцией...
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18240 / 14154 / 5366
Регистрация: 17.03.2014
Сообщений: 28,841
Записей в блоге: 1
08.11.2017, 23:29
Цитата Сообщение от Egor2014 Посмотреть сообщение
пжл, помогите с функцией...
Потерпи. Там не всё так просто. Если хотя бы немного знаком с C#, то можешь самостоятельно переписать код из темы Как определить кодировку веб-страницы?. Там описан правильный подход к определению кодировки. И кстати если у тебя .NET 4.5 или выше, то использование класса HttpClient скорее всего решит задачу.
3
09.11.2017, 03:07

Не по теме:

Уже скоро тридцать лет будет как юникод изобрели, а до сих пор с кодировками мучаются.

0
09.11.2017, 03:14

Не по теме:

Замабувараев, и дальше будем "мучатся" потому что юникод нужен далеко не всегда

0
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
09.11.2017, 06:49  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
установить пакет в проект с помощью консоли или UI.
у меня VS 2010. По указанным ссылкам находятся англоязычные инструкции для VS более старших версий. Как поступить?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18240 / 14154 / 5366
Регистрация: 17.03.2014
Сообщений: 28,841
Записей в блоге: 1
09.11.2017, 07:53
jkrnd, вот здесь есть инструкция для VS 2010. Там только описывается установка пакета PayPalCoreSDK. Заменяй это на UDE.CSharp. Главное нужно сначала установить расширение для работы с NuGet (его начали включать в дистрибутив начиная VS 2012).
2
 Аватар для XIST
1960 / 1061 / 148
Регистрация: 01.10.2009
Сообщений: 3,589
Записей в блоге: 1
09.11.2017, 17:39
Цитата Сообщение от jkrnd Посмотреть сообщение
у меня VS 2010. По указанным ссылкам находятся англоязычные инструкции для VS более старших версий. Как поступить
в утилитах, как там правильно "расширения и обновления" выбираете online и делаете поиск, после установки рестарт студии и всё, он готов
1
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
09.11.2017, 18:26
OwenGlendower, я разобрался в примере на C# и переделал его на VB.Net, прикладываю проект на Microsoft Visual Studio 2017. Можно его потестить у кого есть желание. Функцию оставил после конвертации как есть, может быть кто-то посмотрит, отредактирует.
У меня из нескольких десятков проверяемых URL не загрузились 3 ссылки:
XML
1
2
3
it-event.ru/news/3229/
55med.ru/interest/10470/index.html
wedding75.ru/news/read-zhenilsia-samyi-svetskii-pyos-moskvy.html
1
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
09.11.2017, 18:28
файл
Вложения
Тип файла: zip kodirovka-VB.net.zip (279.5 Кб, 101 просмотров)
2
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18240 / 14154 / 5366
Регистрация: 17.03.2014
Сообщений: 28,841
Записей в блоге: 1
12.11.2017, 07:36
Цитата Сообщение от Egor2014 Посмотреть сообщение
У меня из нескольких десятков проверяемых URL не загрузились 3 ссылки:
Это из-за отсутствия заголовка User-Agent. Добавь его и всё должно заработать.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.11.2017, 07:36
Помогаю со студенческими работами здесь

Изменить кодировку текста в TextBox
Я нашел инфу как поменять кодировку текста , но не могу понять, как ее поменять непосредственно в тексте. Поясняю: есть TextBox, как...

Как определить кодировку текста?
Доброго времени суток. Подскажите как автоматически определить кодировку будь то русский или латинский текст? нужна поддержка кодировок...

Как можно определить кодировку текста используя VB(DOS, WIN, KOI ...)?
Как можно определить кодировку текста используя VB(DOS, WIN, KOI ...)?

Как в "Microsoft.XMLHTTP" определить кодировку текста
Скачиваю страницу из сети (см. код ниже). Но, вместо всех русских букв появляются вопросы - не совпадает кодировка. Кто-нибудь знает,...

Как отличить текст кириллицей от текста латиницей
У меня есть 2 цикла, 1 цикл выполняет проверку слов в тексте через переменную char1 в которой записан русский алфавит и 2 цикл с проверкой...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru