private void ChangeCharacterSetInTextBox(TextBox tb, characterSets toCharacterSet)
        {
            int ss = tb.SelectionStart;
            int sl = tb.SelectionLength;

            tb.Text            = ChangeCharacterSet(tb.Text, toCharacterSet);
            tb.SelectionStart  = ss;
            tb.SelectionLength = sl;
        }
        public MainWindow()
        {
            InitializeComponent();
            rb_CharacterSet1.IsChecked = true;
            currCharacterSet           = characterSets.characterSet1;

            InputMethod.SetIsInputMethodEnabled(tb_Input, false); // Das verhindert das Einfügen von "double byte chars" z.B. von Emoji's (Stichwort: UTF-32)
                                                                  // The High Surrogate(U+D800–U+DBFF) and Low Surrogate(U+DC00–U+DFFF) codes are reserved for encoding non-BMP characters in UTF - 16 by using a pair of 16 - bit codes: one High Surrogate and one Low Surrogate.
                                                                  // A single surrogate code point will never be assigned a character.
                                                                  // non-Basic Multilingual Plane (non-BMP)
                                                                  // https://en.wikipedia.org/wiki/Plane_(Unicode)
        }
        private string GetUnicodeStringCharacterSetRangeByPETSCIIByteArray(byte[] PETSCII, characterSets toCharacterSet)
        {
            StringBuilder sb = new StringBuilder();

            byte[] b = new byte[2];
            foreach (byte currb in PETSCII)
            {
                b[0] = (byte)toCharacterSet;
                b[1] = currb;
                sb.Append(Encoding.BigEndianUnicode.GetString(b));
            }
            return(sb.ToString());
        }
 private string ChangeCharacterSet(string str, characterSets toCharacterSet)
 {
     byte[] PETSCII = GetPETSCIIByteArrayByUnicodeString(str, false, true, false);
     return(GetUnicodeStringCharacterSetRangeByPETSCIIByteArray(PETSCII, toCharacterSet));
 }
 private void Rb_CharacterSet2_Checked(object sender, RoutedEventArgs e)
 {
     currCharacterSet = characterSets.characterSet2;
     ChangeCharacterSetInTextBox(tb_Input, currCharacterSet);
 }