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); }