Декодировка данных из CSV файла - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Добрый день. Проблема заключается в следующем: В файле формата .csv находятся закодированные данные в кодировке ascii, я пытаюсь их декодировать и записать обратно в этот же файл с помощью:
Листинг программы
  1. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
  2. Dim Mass() As String
  3. Mass = IO.File.ReadAllLines(TextBox1.Text)
  4. Dim str1 As String
  5. Dim str2 As String
  6. Dim str3 As String
  7. str1 = Split(Mass(1), ";")(0)
  8. str2 = Split(Mass(1), ";")(1)
  9. str3 = Split(Mass(1), ";")(2)
  10. For i As Integer = 1 To Mass.Length - 1
  11. ' str1 = Split(Mass(i), ";")(0)
  12. 'str2 = Split(Mass(i), ";")(1)
  13. ' str3 = Split(Mass(i), ";")(2)
  14. Dim bytes1 As Byte() = str1.Split(" "c).Select(Function(n) Convert.ToByte(Convert.ToInt64(n, 10))).ToArray()
  15. Dim bytes2 As Byte() = str2.Split(" "c).Select(Function(n) Convert.ToByte(Convert.ToInt64(n, 10))).ToArray()
  16. Dim bytes3 As Byte() = str3.Split(" "c).Select(Function(n) Convert.ToByte(Convert.ToInt64(n, 10))).ToArray()
  17. Dim value1 As String = System.Text.ASCIIEncoding.ASCII.GetString(bytes1)
  18. Dim value2 As String = System.Text.ASCIIEncoding.ASCII.GetString(bytes2)
  19. Dim value3 As String = System.Text.ASCIIEncoding.ASCII.GetString(bytes3)
  20. Dim nov_i As String = String.Join(";", value1, value2, value2)
  21. Mass(i) = nov_i
  22. Next
  23. IO.File.WriteAllLines(TextBox1.Text, Mass)
  24. End Sub
  25. End Class
Но русские буквы закодированные в ascii декодируются в полную тарабарщину, как это исправить?

Решение задачи: «Декодировка данных из CSV файла»

textual
Листинг программы
  1. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
  2.  
  3.     Dim enc As Encoding = Encoding.GetEncoding(1251)
  4.     Dim Mass() As String = IO.File.ReadAllLines(TextBox1.Text, enc)
  5.  
  6.     For i As Integer = 0 To Mass.Length - 1
  7.         Dim parts() As String = Mass(i).Split(";")
  8.         For j As Integer = 0 To parts.Length-1
  9.             parts(j) = """" & enc.GetString(parts(j).TrimStart("""").TrimEnd("""").Split(" ").Select(Function(n) Convert.ToByte(n, 10)).ToArray()) & """"
  10.         Next
  11.         Mass(i) = String.Join(";", parts)
  12.     Next
  13.     IO.File.WriteAllLines(TextBox1.Text, Mass, enc)
  14.  
  15. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут