Hier, mal eben zusammengeschrieben, hoffe es hilft dir ![]()
C#
using System;
using System.Text;
using System.Collections.Generic;
public class HelloWorld
{
private static IReadOnlyDictionary<string, string> SPECIAL_DIACRITICS = new Dictionary<string, string>
{
{ "ä".Normalize(NormalizationForm.FormD), "{".Normalize(NormalizationForm.FormD) },
{ "Ä".Normalize(NormalizationForm.FormD), "[".Normalize(NormalizationForm.FormD) },
{ "ö".Normalize(NormalizationForm.FormD), "|".Normalize(NormalizationForm.FormD) },
{ "Ö".Normalize(NormalizationForm.FormD), "\\".Normalize(NormalizationForm.FormD) },
{ "ü".Normalize(NormalizationForm.FormD), "}".Normalize(NormalizationForm.FormD) },
{ "Ü".Normalize(NormalizationForm.FormD), "]".Normalize(NormalizationForm.FormD) },
{ "ß".Normalize(NormalizationForm.FormD), "~".Normalize(NormalizationForm.FormD) },
};
public static void Main(string[] args)
{
String newAnzeige = "zA1Tägel";
Console.OutputEncoding = Encoding.UTF8;
Console.WriteLine(PrepareMessage(newAnzeige));
}
private static String PrepareMessage(String xMessage)
{
var stringBuilder = new StringBuilder(xMessage.Normalize(NormalizationForm.FormD));
foreach (var keyValuePair in SPECIAL_DIACRITICS)
{
stringBuilder.Replace(keyValuePair.Key, keyValuePair.Value);
}
stringBuilder.Append(CalculateChecksum(xMessage));
return stringBuilder.ToString();
}
private static byte CalculateChecksum(String xMessage)
{
xMessage += 0x0D;
byte checksum = 0x7F;
byte[] bytes = Encoding.ASCII.GetBytes(xMessage);
foreach (byte b in bytes)
{
checksum ^= b;
}
return checksum;
}
}
Alles anzeigen


