Laden...

Sonderzeichenproblem

Erstellt von thomae vor 15 Jahren Letzter Beitrag vor 15 Jahren 528 Views
T
thomae Themenstarter:in
94 Beiträge seit 2006
vor 15 Jahren
Sonderzeichenproblem

verwendetes Datenbanksystem: Oracle 9i

Hallo Leute

ich schlage mich schon seit längerer Zeit mit folgendem Problem rum:

Ich bekomme Inputdaten aus aller Welt - Sprich die verwendeten Zeichen könnten unterschiedlicher nicht sein. Nun möchte ich alle Zeichen die erlaubt sind in meiner Datenbank ablegen.

Dazu habe ich folgende Klasse geschrieben:


using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;

namespace com.comfone.HDSClient.Utils
{
    class StringChecker
    {
        private static string regexPattern = "^[A-Za-z-0-9,._!?=()%/;+*@$-]$";
        
        public static string ReplaceMethode(Match m)
        {
            switch (m.Value)
            {
                case "\r":
                    return "";

                case "\n":
                    return "";

                case "'":
                    return "´";

                case "\"":
                    return "";

                case "p":
                    return "-";

                case "Z":
                    return "S";

                case "[":
                    return "s";

                case "":
                    return "e";

                case "":
                    return "E";

                case "{":
                    return "Z";

                case "|":
                    return "z";

                case "D":
                    return "n";

                case "C":
                    return "N";

                case "ó":
                    return "o";

                case "Ó":
                    return "O";

                case "y":
                    return "Z";

                case "z":
                    return "z";

                case "B":
                    return "l";

                case "A":
                    return "L";

                case "":
                    return "a";

                case "":
                    return "A";

                case "ž":
                    return "z";

                case "Ž":
                    return "Z";

                case "š":
                    return "s";

                case "Š":
                    return "S";

                case "":
                    return "C";

                case "
":
                    return "c";

                case "–":
                    return "-";

                case "ä":
                    return "ae";

                case "ü":
                    return "ue";

                case "ö":
                    return "oe";

                case "é":
                    return "e";

                case "è":
                    return "e";

                case "ê":
                    return "e";

                case "ë":
                    return "e";

                case "á":
                    return "a";

                case "à":
                    return "a";

                case "â":
                    return "a";

                case "æ":
                    return "ae";

                case "å":
                    return "a";

                case "ì":
                    return "i";

                case "í":
                    return "i";

                case "î":
                    return "i";

                case "ï":
                    return "i";

                case "ò":
                    return "o";

                case "ô":
                    return "o";

                case "õ":
                    return "o";

                case "ù":
                    return "u";

                case "ú":
                    return "u";

                case "û":
                    return "u";

                case "ý":
                    return "y";

                case "ÿ":
                    return "y";

                case "ø":
                    return "o";

                case "œ":
                    return "oe";

                case "ß":
                    return "ss";

                case "ç":
                    return "c";

                case "ñ":
                    return "n";

                case "ã":
                    return "a";

                case "&":
                    return "and";

                case "":
                    return "";

                case "0":
                    return "0";

                case "1":
                    return "1";

                case "2":
                    return "2";

                case "3":
                    return "3";

                case "4":
                    return "4";

                case "5":
                    return "5";

                case "6":
                    return "6";

                case "7":
                    return "7";

                case "8":
                    return "8";

                case "9":
                    return "9";

                default:
                    return m.Value;
            }
        }

        public static string replaceNotAnsiCharacters(string stringToCheck)
        {
            string retValue = stringToCheck;
            Regex myRegex = new Regex(regexPattern);
            MatchEvaluator myEvaluator = new MatchEvaluator(ReplaceMethode);
            if (!myRegex.IsMatch(stringToCheck))
            {
                retValue = "";
                for (int i = 0; i < stringToCheck.Length; i++)
                {
                    retValue += Regex.Replace(stringToCheck[i].ToString(), "-*.*", myEvaluator, RegexOptions.IgnoreCase);
                }
            }
            return retValue;
        }
    }
}

Nun reicht dies aber nicht! Ich suche nach einer besseren Variante, die mir alles nicht erlaubte noch weglöscht!

noch besser wäre eine Lösung die ich direkt auf der datenbank anwenden kann. Per Trigger oder so..

Weiter habe ich das Problem, dass meine DB jetzt Daten beinhält welche nicht zulässig sind. Hoffe jemand kann mir helfen..

Danke schon mal

Thomä