Dynamischer Daten Import / Export

datenbank

weil Einfach - produktiver ist
Mit der Freeware Version können bis zu 10.000 Datensätze verarbeitet werden!
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
Willkommen im FlowHeater Support Forum!

Hier werden Fragen zum Umgang mit dem FlowHeater beantwortet.

THEMA: Umlaute, Sonderzeichen und Co.

Umlaute, Sonderzeichen und Co. 5 Jahre 6 Monate her #440

  • fertac
  • fertacs Avatar
  • Offline
  • Senior Member
  • Beiträge: 49
Hallo Herr Stark,

habe folgenden Code. Kann aber ö, ä nicht mit verarbeiten und wenn auf der read Seite 1/3" für 1/3 Zoll steht setzt er "1/3"" auf der write Seite.

Habe schon Sonderzeichen im script eingebaut. Bin aber nicht sicher ob das so o.k. ist.

Beispiel: redseite
ändern
öfnen
1/3" Rohr


string [] csv = null;

public object DoWork()
{
string sRet = null;
string ersetzen_durch = ""; // = wird aus der Zeichenkette entfernt

// CSV replace daten einlesen;

if (csv == null)
csv = File.ReadAllLines("replace.csv");

string sIN = (String)InValues[0].GetString();
if (sIN == null)
return null;

// falls Zeichen fehlen sollten hier die zusätzlichen Sonderzeichen eintragen
// die nicht ersetzt werden sollen
string sonderzeichen = "\t\n\r\\[\\]!ß´#\"$§%&' ()*+€,-./:;<=>?@\\^_`{|}~";

Regex myRegex = new Regex(@"[^\w\d" + sonderzeichen + "]");
sIN = myRegex.Replace(sIN, ersetzen_durch);



// Über alle Zeilen der replace.csv Datei lesen
foreach(string line in csv)
{
char [] trennzeichen = { ';' }; //
string [] values = line.Split(trennzeichen);

// kommt der 1. Wert der CSV Datei im IN Parameter vor,
// dann den 2. Wert der CSV zurückgeben.
if (sIN.IndexOf(values[0], StringComparison.CurrentCultureIgnoreCase) >= 0)
{
sRet = values[1];
break;
}
}

if (sRet == null)
sRet = "x"; // hier ggf. den Wert ändern falls nichts zutreffend!

return sRet;
}

Viele Grüße
fertac :unsure:
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Umlaute, Sonderzeichen und Co. 5 Jahre 6 Monate her #441

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1102
Hallo Herr Kappen,

Das mit dem Regular Expression (RegEx) ist nicht notwendig. Im Anhang befindet sich ein Beispiel, das auch mit Umlauten funktioniert.

Ich denke bei Ihnen ist die replace.csv Datei nicht im Windows ANSI (Codepage 1251) Format abgespeichert. Was zeigt Ihnen z.B. Notepad an wenn Sie die Datei replace.csv öffnen. Werden hier die Sonderzeichen und Umlaute richtig dargestellt? Wenn nein, müssen Sie die Datei vorher konvertieren. Geht auch mit dem FlowHeater, siehe Beispiele:
  1. MS DOS ASCII CSV zu Windows ANSI FlatFile konvertieren
  2. Windows ANSI FlatFile zu MS DOS ASCII CSV konvertieren
PS: Ca. Anfang nächste Woche wird es eine neue Version geben. Hier ist diese Funktionalität des Skriptes in den String Replace Heater eingebaut. Unter anderem können Sie dann auch die Codepage auswählen in der ihre ersetzen Datei vorliegt.

Anhang umlaute.zip nicht gefunden

Anhang:
gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Umlaute, Sonderzeichen und Co. 5 Jahre 6 Monate her #442

  • fertac
  • fertacs Avatar
  • Offline
  • Senior Member
  • Beiträge: 49
Hallo Herr Stark,

danke für die schnelle Antwort.

Das Problem liegt aber nicht auf der read sondern auf der write Seite. Wenn ich in der replace.csv das eintrage:

öffnen; noch nicht geöffnet // write Seite ...ge?ffnet
1/3" ; 1/3" oder größer // write Seite "1/3""...
ändern; noch nicht geändert // write Seite ...ge?ndert

Beide Seiten sind auf Code 1252 eingestellt wie in ihrem Beispiel.

Viele Grüße
fertac ;)
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Umlaute, Sonderzeichen und Co. 5 Jahre 6 Monate her #443

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1102
Mit welchen Editor bzw. Programm schauen Sie sich denn die Ausgabe Daten an? Funktioniert mein Beispiel mit den Umlauten bei Ihnen?

Für eine weitere Analyse benötige ich Ihre Defintion, die replace.csv sowie (Test) Eingangsdaten mit dennen das nachgstellt werden kann. Bitte alles in ein ZIP Archiv packen und hier einstellen.
gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Umlaute, Sonderzeichen und Co. 5 Jahre 6 Monate her #447

  • fertac
  • fertacs Avatar
  • Offline
  • Senior Member
  • Beiträge: 49
Hallo Herr Stark,

hier die .zip Datei mit dem Beispiel.
In der input Datei steht:
djk hfdk fhdk fkjd1/3"hfkdhf kd hfkdhfkdhkfjh dkjfh dkfhdkjhf kdjhf jdhfdkjfddkfh dkfhdkj

Auf der reade Seite:
"djk hfdk fhdk fkjd1/3""hfkdhf kd hfkdhfkdhkfjh dkjfh dkfhdkjhf kdjhf jdhfdkjfddkfh dkfhdkj"

Auf der write Seite:
Sonstiges // da der Begriff nicht gefunden wurde

Viele Grüße
fertac

Anhang fertac_replace.zip nicht gefunden

Anhang:
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Umlaute, Sonderzeichen und Co. 5 Jahre 6 Monate her #448

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1102
Hallo Herr Kappen,

mit folgenden Script wird die replace.csv Datei nun auch mit der gleichen Codepage geöffnet wie gelesen bzw. geschrieben wird. Bitte versuchen Sie es mit diesem Skript erneut.

Es hat sich nur folgende Zeile geändert!
csv = File.ReadAllLines("replace.csv", Encoding.Default);
string [] csv = null;

public object DoWork()
{
  string sRet = null;

  // CSV replace daten einlesen
  if (csv == null)
    csv = File.ReadAllLines("replace.csv", Encoding.Default);

  string sIN = (String)InValues[0].GetString();
  if (sIN == null)
    return null;

  // Über alle Zeilen der replace.csv Datei lesen
  foreach(string line in csv)
  {
    char [] trennzeichen = { ';' }; //
    string [] values = line.Split(trennzeichen);
    
    // kommt der 1. Wert der CSV Datei im IN Parameter vor,
    // dann den 2. Wert der CSV zurückgeben.
    if (sIN.IndexOf(values[0], StringComparison.CurrentCultureIgnoreCase) >= 0)
    {
      sRet = values[1];
      break;
    }
  }

  if (sRet == null)
    sRet = "Sonstiges"; // hier ggf. den Wert ändern falls nichts zutreffend!
  
  return sRet;
}
gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Umlaute, Sonderzeichen und Co. 5 Jahre 6 Monate her #453

  • fertac
  • fertacs Avatar
  • Offline
  • Senior Member
  • Beiträge: 49
Hallo Herr Stark,

danke für die schnelle Antwort.

Das mit den Umlauten funktioniert jetzt sehr gut.

Aber das Thema " klappt noch nicht. Sobald in der input Datei ein " vorkommt setzt die readseite das wiederum in Anführungsstriche. Das sieht dann immer noch so wie oben beschrieben aus.

Danke für ihre guten Nerven und Geduld.

Viele Grüße
fertac
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Umlaute, Sonderzeichen und Co. 5 Jahre 6 Monate her #455

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1102
Hallo Herr Kappen,

das liegt daran, dass Sie Hochkommas in Ihrer replace.csv stehen haben :)

Ändern Sie mal die Zeile

"1/3""";"1/3"" Rohr oder größer ohne zu ändern "

auf

1/3";1/3" Rohr oder größer ohne zu ändern

Dann sollte es funktionieren.
gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Umlaute, Sonderzeichen und Co. 5 Jahre 6 Monate her #456

  • fertac
  • fertacs Avatar
  • Offline
  • Senior Member
  • Beiträge: 49
Hallo Herr Stark,

jetzt kommen wir der Sache schon näher.

Offensichtlich sehen sie beim öffnen der Excel-Datei replace.csv folgendes:
"1/3""";"1/3"" Rohr oder größer ohne zu ändern "


Ich sehe beim öffnen der Datei mit Excel:
1/3";1/3" Rohr oder größer ohne zu ändern
(siehe .jpg)

Mein Eintrag scheint somit richtig zu sein.


Im FlowHeater - Text File Viewer sehe ich dann auch wieder:
"1/3""";"1/3"" Rohr oder größer ohne zu ändern "

Die Veränderung findet dann wohl beim Einlesen nach FlowHeater statt.

Viele Grüße
fertac B)

Anhang fertac_replace-20110603-3.zip nicht gefunden

Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Umlaute, Sonderzeichen und Co. 5 Jahre 6 Monate her #457

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1102
Hallo Herr Kappen,

CSV Dateien mit Excel zu öffnen kann ich Ihnen nicht empfehlen! Excel zeigt Ihnen hier was Falsches an. Bitte öffnen Sie Ihre CSV Datei mal mit Notepad, dann sehen Sie, dass hier in der letzen Zeile Hochkommas vorhanden sind!

Die äußeren Hochkommas können Sie auf der READ Seite Eleminieren wenn Sie im TextFile Adapter auf dem Reiter Trennzeichen für die Textbegrenzung "abc" einstellen.
gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Umlaute, Sonderzeichen und Co. 5 Jahre 6 Monate her #458

  • fertac
  • fertacs Avatar
  • Offline
  • Senior Member
  • Beiträge: 49
Hallo Herr Stark,

ja das ist ein Weg der funktioniert.

Eine andere Lösung ist eine Excel-Datei einzulesen und eine Excel-Datei auszugeben. Dann gibt es kein Problem mehr mit den ".

Eine weitere Lösung aus einer Excel-Datei eine .csv-Datei ohne "-Probleme zu generieren habe ich hier.
Der VB-Script gehört in eine Excel-Datei die in .csv gewandelt werden soll. Hier wird eine .csv Datei mit gleichem Namen im gleichen Ordner erstellt.

Public Sub prcCreateCSV()
Dim intFileNumber As Integer
Dim lngRow As Long
Reset
intFileNumber = FreeFile
With ThisWorkbook
.Save
Open .Path & "\" & Left$(.Name, Len(.Name) - 4) & _
".csv" For Output As #intFileNumber
End With
With ActiveSheet.UsedRange
For lngRow = 1 To .Row + .Rows.Count - 1
Print #intFileNumber, Join(WorksheetFunction.Transpose( _
WorksheetFunction.Transpose(Range(Cells(lngRow, 1), _
Cells(lngRow, .Column + .Columns.Count - 1)))), ";")
Next
End With
Close #intFileNumber
End Sub


Viele Grüße
fertac :) :)
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Moderatoren: FlowHeater-Team
Ladezeit der Seite: 0.098 Sekunden