Avatar billede trenskow Nybegynder
23. april 2010 - 11:36 Der er 11 kommentarer og
1 løsning

Encode decode problem

Hej

Jeg har fået en sql fil fra et gammel forum som vi er ved at konvertere til phpbb.

I den forbindelse har jeg lavet et lille C# program som læser den sql fil, deler den op i tråde og poste, og derefter genererer sqlfiler som jeg kan smide i den nye database, så den vil have de gamle tråde med der.

Mit problem er, at denne tekst i den oprindelige sql fil
"Hermed tråd til brug for diskussionen om, hvorvidt vi skal indgå samarbejde med ZYX.\r\n\r\nNår I har læst det udleverede materiale igennem, byder I bare ind hér med jeres holdning og kommentarer."

Bliver til dette efter at have været igennem mit program
"Hermed tr�d til brug for diskussionen om, hvorvidt vi skal indg� samarbejde med XYZ.\r\n\r\nN�r I har l�st det udleverede materiale igennem, byder I bare ind h�r med jeres holdning og kommentarer."

Som i kan se, så bliver alle æ ø og å, og sikkert også andre special karakterer lavet om til Nï¿

Nogen der har et godt råd til hvordan koden til at læse den oprindelige sql fil skal se ud, så det bliver korrekt?

På forhånd tak
Avatar billede erikjacobsen Ekspert
23. april 2010 - 12:29 #1
Det ser ud til at filen er i UTF-8, men du kigger på som om den var iso-8859-1. Så vil det selvfølgelig ikke se godt ud.

Hvilket tegnsæt skal du bruge?
Avatar billede trenskow Nybegynder
23. april 2010 - 12:36 #2
Hej

Hvad for et tegnsæt jeg skal bruge? øhh.... det er underordnet, bare det der kommer ud i den anden ende er en sql textfil :-)

Eller har jeg misforstået dig (tror jeg)

Jeg har forsøgt at læse filen med denne kode, men det hjalp ikke.

public static string ReadTextFileUTF_8(string fi)
        {
            TextReader tr = new StreamReader(fi);
            System.Text.Encoding utf_8 = System.Text.Encoding.UTF8;
            byte[] utf8bytes = System.Text.Encoding.UTF8.GetBytes(tr.ReadToEnd());
            string unicode = System.Text.Encoding.UTF8.GetString(utf8bytes);
            return unicode;
        }
Avatar billede arne_v Ekspert
23. april 2010 - 15:20 #3
Den kode goer intet da du konverterer fra og til UTF-8.

public static string ReadTextFileUTF_8(string fi)
        {
            return (new StreamReader(fi, Encoding.UTF8)).ReadToEnd();
        }
Avatar billede trenskow Nybegynder
23. april 2010 - 20:24 #4
Hej Arne

Tak for tippet

Men mit output er næsten det samme

"Hermed tr�d til brug for diskussionen om, hvorvidt vi skal indg� samarbejde med XYZ.\r\n\r\nN�r I har l�st det udleverede materiale igennem, byder I bare ind h�r med jeres holdning og kommentarer."

Kan det være når jeg gemmer det går galt? Jeg gemmer bare som standard.

        public static void WriteFile(string filename, string text)
        {
            TextWriter tw = new StreamWriter(filename);
            tw.WriteLine(text);
            tw.Close();
        }
Avatar billede arne_v Ekspert
23. april 2010 - 20:26 #5
public static void WriteFile(string filename, string text)
        {
            TextWriter tw = new StreamWriter(filename, false, Encoding.UTF8);
            tw.WriteLine(text);
            tw.Close();
        }
Avatar billede trenskow Nybegynder
23. april 2010 - 20:36 #6
Hej Arne

Jeg siger mange tak for din tålmodighed, men nu får jeg bare dette som output.

"Hermed tr�d til brug for diskussionen om, hvorvidt vi skal indg� samarbejde med XYZ.\r\n\r\nN�r I har l�st det udleverede materiale igennem, byder I bare ind h�r med jeres holdning og kommentarer."
Avatar billede trenskow Nybegynder
23. april 2010 - 20:37 #7
Hov..
Det er ikke �  som der står ovenover, men derimod en lille firkant med spørgsmålstegn inde i, som nu står der hvor der skulle stå æ, ø eller å
Avatar billede arne_v Ekspert
23. april 2010 - 20:47 #8
Check om den fil du skriver med WriteFile ser korrekt ud naar den vises af et program som forstaar UTF-8.
Avatar billede trenskow Nybegynder
23. april 2010 - 23:14 #9
Hej Arne

Det gør den.

Men jeg har løst problemet på en anden måde.

Jeg tog sq den fil som jeg skulle læse i notepad, og bad den om at gemme den i unicode, og så virkede det.

Tak for hjælpen. Vil du ligge et svar, så får du pointene for i det mindste at guide mig i den rigtige retning.
Avatar billede arne_v Ekspert
24. april 2010 - 02:37 #10
Notepad gem som unicode betyder UTF-16.

Det er meget usædvaneligt at have noget som forventer UTF-16.

Men bare det virker.

Og et svar fra mig.
Avatar billede erikjacobsen Ekspert
24. april 2010 - 10:05 #11
Jeg får sommetider noget i UTF-16 som vistnok kommer fra SQL Server Management Studio.

Hvis jeg lige må vende tilbage til #2: "Hvad for et tegnsæt jeg skal bruge? øhh.... det er underordnet"  -  det er faktisk et ret vigtigt valg. Groft sagt kan man altid vælge UTF-8, i nogle tilfælde kan man "nøjes" med ISO-8859-1 - men det er en længere historie.

Hvordan er det nu man siger: Ingen er blevet fyret for at vælge UTF-9.  :D
Avatar billede erikjacobsen Ekspert
24. april 2010 - 10:06 #12
Og det "9" tal skal vist være "8" - ellers må jeg igang med at opfinde en ny standard.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester