Avatar billede conehead Nybegynder
08. april 2005 - 16:36 Der er 10 kommentarer og
1 løsning

konvertering af danske tegn

jeg modtager data fra en NetworkStream og placerer dem i et byte array.

Hvordan sikrer jeg mig at æ, ø og å bliver genskabt korrekt når jeg konverterer indholdet til en streng?

Jeg har forsøgt med Encoding.ASCII.GetString(myByteArray) og
Encoding.Unicode.GetString(myByteArray) og
Encoding.UTF7.GetString(myByteArray) og
Encoding.UTF8.GetString(myByteArray),

men alle substituerer de de danske tegn med nogle mærkelige tegn. Jeg har fundet ud af, at de danske tegn hører til det udvidede ascii-tegnsæt på
www.asciitable.com
Avatar billede arne_v Ekspert
08. april 2005 - 16:40 #1
Prøv:

Encoding.Default
Avatar billede conehead Nybegynder
08. april 2005 - 16:49 #2
ups jeg glemte Encoding.Default. Den har jeg også forsøgt mig med.
Hvis jeg bruger den bliver Æ til "’" og Å til ""
Avatar billede lifo Nybegynder
08. april 2005 - 16:50 #3
har du også prøvet med UTF8
Avatar billede lifo Nybegynder
08. april 2005 - 16:51 #4
det hele kommer and på hvad for en encoding programmet som sender encoder med
Avatar billede conehead Nybegynder
08. april 2005 - 16:55 #5
jeg har prøvet med alle de indbyggede encodings. Det program jeg modtager data fra angiver koderne som ses på asciitable.com.

dvs. Æ=146 æ=145 osv.

Jeg tænkte blot på, når nu tegnene er standardiserede i denne tabel, så kunne det være at der var en indbygget funktion i .NET til at konvertere min bytes med.
Avatar billede arne_v Ekspert
08. april 2005 - 17:03 #6
Prøv:

Encoding.GetEncoding(437)

og

Encoding.GetEncoding(850)

og

Encoding.GetEncoding(865)
Avatar billede conehead Nybegynder
08. april 2005 - 17:08 #7
437 og 850 giver samme resultat som Encoding.Default, mens 865 giver en exception
Avatar billede arne_v Ekspert
08. april 2005 - 17:17 #8
Mystisk.

850 virker for mig.

146 145 -> Ææ
Avatar billede arne_v Ekspert
08. april 2005 - 17:17 #9
Prøv selv:

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Text;

namespace E6
{
    /// <summary>
    /// Description of MainForm.
    /// </summary>
    public class MainForm : System.Windows.Forms.Form
    {
        private System.Windows.Forms.Button button3;
        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.TextBox textBox1;
        private System.Windows.Forms.Button button2;
        public MainForm()
        {
            //
            // The InitializeComponent() call is required for Windows Forms designer support.
            //
            InitializeComponent();
           
            //
            // TODO: Add constructor code after the InitializeComponent() call.
            //
        }
       
        [STAThread]
        public static void Main(string[] args)
        {
            Application.Run(new MainForm());
        }
       
        #region Windows Forms Designer generated code
        /// <summary>
        /// This method is required for Windows Forms designer support.
        /// Do not change the method contents inside the source code editor. The Forms designer might
        /// not be able to load this method if it was changed manually.
        /// </summary>
        private void InitializeComponent() {
            this.button2 = new System.Windows.Forms.Button();
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.button1 = new System.Windows.Forms.Button();
            this.button3 = new System.Windows.Forms.Button();
            this.SuspendLayout();
            //
            // button2
            //
            this.button2.Location = new System.Drawing.Point(96, 144);
            this.button2.Name = "button2";
            this.button2.TabIndex = 2;
            this.button2.Text = "UTF8";
            this.button2.Click += new System.EventHandler(this.Button2Click);
            //
            // textBox1
            //
            this.textBox1.Location = new System.Drawing.Point(96, 32);
            this.textBox1.Name = "textBox1";
            this.textBox1.TabIndex = 0;
            this.textBox1.Text = "";
            //
            // button1
            //
            this.button1.Location = new System.Drawing.Point(96, 88);
            this.button1.Name = "button1";
            this.button1.TabIndex = 1;
            this.button1.Text = "default";
            this.button1.Click += new System.EventHandler(this.Button1Click);
            //
            // button3
            //
            this.button3.Location = new System.Drawing.Point(96, 192);
            this.button3.Name = "button3";
            this.button3.TabIndex = 3;
            this.button3.Text = "850";
            this.button3.Click += new System.EventHandler(this.Button3Click);
            //
            // MainForm
            //
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(292, 266);
            this.Controls.Add(this.button3);
            this.Controls.Add(this.button2);
            this.Controls.Add(this.button1);
            this.Controls.Add(this.textBox1);
            this.Name = "MainForm";
            this.Text = "MainForm";
            this.ResumeLayout(false);
        }
        #endregion
        private byte[] b = { 146, 145 };
       
        void Button1Click(object sender, System.EventArgs e)
        {
            textBox1.Text = Encoding.Default.GetString(b);
        }
       
        void Button2Click(object sender, System.EventArgs e)
        {
            textBox1.Text = Encoding.UTF8.GetString(b);
        }
       
        void Button3Click(object sender, System.EventArgs e)
        {
            textBox1.Text = Encoding.GetEncoding(850).GetString(b);
        }
       
    }
}
Avatar billede conehead Nybegynder
08. april 2005 - 17:39 #10
Ja, du har ret Arne. Udskrivnining af en forkert streng var problemet. Nu virker det skam tip-top. Svar for point.
Avatar billede arne_v Ekspert
08. april 2005 - 18:01 #11
svar
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