17. juni 2009 - 16:20Der er
4 kommentarer og 1 løsning
Tjekke Text encoding
Hej
Jeg har et problem jeg håber i kan hjælpe med.
Jeg har et VB program som læser nogle tekstfiler/csv filer og smider dataene fra disse ind i en database. Problemet ligger i at det er forskelligt hvilken text-encoding filerne er lavet i. Nogle af filerne er lavet i UTF-8, andre i ASCII. Jeg bruger StreamReader til at læse filerne med, og da jeg somsagt ikke ved hvilken encoding filerne er i har jeg problemer med æøå osv.
Er der nogen som har en god ide hvordan jeg enten kan finde udaf hvilken encoding filerne har eller evt. hvordan jeg kan læse filer med forskellig encoding ind uden at få problemer med æøå.
Public Class CharSetGuesser Public Shared Function Guess(filename As String) As String Dim freq As Integer() = New Integer(255) {} Dim stm As Stream = New FileStream(filename, FileMode.Open, FileAccess.Read) Dim c As Integer While (c = stm.ReadByte()) >= 0 freq(c) += 1 End While stm.Close() If (freq(197) + freq(198) + freq(200) + freq(201) + _ freq(203) + freq(216) + freq(229) + freq(230) + _ freq(232) + freq(233) + freq(235) + freq(248)) > _ (freq(133) + freq(134) + freq(136) + freq(137) + _ freq(139) + freq(152) + freq(165) + freq(166) + _ freq(168) + freq(169) + freq(171) + freq(184) + freq(195)) Then Return "ISO-8859-1" Else Return "UTF-8" End If End Function Public Shared Sub Main(args As String()) Console.WriteLine(Guess("C:\iso-8859-1.txt")) Console.WriteLine(Guess("C:\utf-8.txt")) End Sub End Class
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.