WinFuture-Forum.de: Batch Umlaute in txt übergeben und ändern - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Batch Umlaute in txt übergeben und ändern


#1 Mitglied ist offline   snboy2010 

  • Gruppe: Mitglieder
  • Beiträge: 4
  • Beigetreten: 02. April 19
  • Reputation: 0

geschrieben 02. April 2019 - 06:44

Guten Morgen. Ich habe den folgenden Code:
@ECHO off
chcp 1252
SETLOCAL enabledelayedexpansion


SET quelle=Einzelsignatur_Org.html
SET ziel= Einzelsignatur_Neu.html


set /p Name=Bitte Vorname Nachname eingeben:
set /p EMail=Bitte E-Mail-Adresse eingeben:
set /p Rufnummer=Bitte Telefonnummer eingeben(Nur die Endnummer angeben):
set /p Abteilung=Bitte Abteilung eingeben:


FOR /f "delims=" %%i IN ('FINDSTR . %quelle%') DO (
SET ganze_zeile=%%i
SET ganze_zeile=!ganze_zeile:Max Mustermann=%Name%!
SET ganze_zeile=!ganze_zeile:maxmustermann=%EMail%!
SET ganze_zeile=!ganze_zeile:Abteilung=%Abteilung%!
SET ganze_zeile=!ganze_zeile:xxxx=%Rufnummer%!
ECHO !ganze_zeile!
ECHO !ganze_zeile! >> %ziel%
)

pause


Der Code durchsucht eine HTML-Datei und ändert wie oben beschrieben die Daten gemäß der Eingabe der User.
Mein Problem ist, dass Umlaute nicht richtig übergeben werden. Z.B. Das Ü in Müller wird als irgendein Symbol dargestellt.
Wäre wirklich für eine Hilfestellung dankbar. P.S. PowerShell darf ich nicht verwenden.
0

Anzeige



#2 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.895
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

geschrieben 02. April 2019 - 07:09

Diese HTML-Datei, dient die nur und ausschließlich der Anzeige, oder wird da noch was weiterverarbeitet?

- Falls es nur um die Anzeige geht, dann könntest Du Umlaute (und ß) durch ihre HTML-Entities ersetzen.

Jede Entity geht mit einem & los und wird mit einem ; beendet. Sie sind, für diesen Zweck, auch relativ sprechend:

ä => kleines "a" + Umlaut => ä
Ä => großes "A" + Umlaut => Ä

entsprechend für Ö/ö und Ü/ü.

ß ist eine Ligatur, daher ist die Entity ß für "S+Z Ligatur".

Alle in Entities verwendeten Zeichen sind Teil des ASCII-Zeichensatzes und können daher in praktisch allen Codeseiten unverändert übernommen werden.

Wenn Entities nicht zielführend sind oder sonst nicht verwendet werden können:

- Stelle sicher, daß ALLE an der Verarbeitung beteiligten Dateien und Daten derselben Codeseite entsprechen. CHCP 1252 in die Batchdatei schreiben hilft nichts, wenn diese als UTF8 oder sonst was anderem gespeichert wurde und/oder wenn die Ausgabedatei nicht als windows-1252 (ggfs ISO8859-1) vorliegt.

- Falls Du die Möglichkeit hast, speicher alles als UTF8 und schreib statt 1252 (für ANSI) stattdessen 65001 (für UTF8) in den chcp-Befehl.
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#3 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.111
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 02. April 2019 - 07:21

Eventuell reicht es ja schon, falls vorhanden, den meta-Tag mit der Zeichensatzkodierung aus der html-Datei zu entfernen oder charset=utf-8 durch charset=iso-8859-1 zu ersetzen. HTML-Entities sind ein bißchen problematisch, weil dann eine ähnliche Suche bei den Umlauten wieder nicht funktioniert, bzw. müßte man das dann extra im Script berücksichtigen.
Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

#4 Mitglied ist offline   snboy2010 

  • Gruppe: Mitglieder
  • Beiträge: 4
  • Beigetreten: 02. April 19
  • Reputation: 0

geschrieben 02. April 2019 - 07:22

Hallo und vielen Dank für die Antwort. Allerdings hilft mir es noch nicht. Ich vermute den Fehler beim Einlesen in die Variablen. Aber bisher klappt keine Möglichkeit dieses Problem zu lösen.
0

#5 _Osmodia_

  • Gruppe: Gäste

geschrieben 02. April 2019 - 07:31

Dein Problem sind die Zeichensätze. HTML wird - wenn in der HTML-Datei nicht anders festgelegt - als UTF-8 interpretiert. In der Batch hingegen setzt du den Zeichensatz auf 1252. Das passt nicht, weil Sonderzeichen, Umlaute etc. je nach Zeichensatz ganz andere Zeichencodes verwenden.
0

#6 Mitglied ist offline   snboy2010 

  • Gruppe: Mitglieder
  • Beiträge: 4
  • Beigetreten: 02. April 19
  • Reputation: 0

geschrieben 02. April 2019 - 07:35

Ja und wie passe ich jetzt den Code an?
0

#7 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.111
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 02. April 2019 - 07:48

RalphS hat es ja schon geschrieben. In der Batch chcp 65001 statt chcp 1252.

Was ich geschrieben hatte, mit dem charset wäre dann andersrum, die html-Datei an die Batch angepasst.

(Aber nur eins von Beiden machen)

Dieser Beitrag wurde von Holger_N bearbeitet: 02. April 2019 - 07:50

Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

#8 Mitglied ist offline   snboy2010 

  • Gruppe: Mitglieder
  • Beiträge: 4
  • Beigetreten: 02. April 19
  • Reputation: 0

geschrieben 02. April 2019 - 07:54

Ok, Problem gelöst. Die Quell-HTML als txt mit ANSI speichern. Dann kann der Code oben so verwendet werden.
0

#9 _Osmodia_

  • Gruppe: Gäste

geschrieben 02. April 2019 - 09:12

Das ist nicht wirklich eine Lösung, eher ein zufällig funktionierender Work-around. Wenn eine HTML-Datei nicht UTF-8 ist, MUSS die Zeichenkodierung im Head-Bereich angegeben werden, ansonsten macht jedes Programm beim Anzeigen was anderes. Eigentlich sollte man die Zeichenkodierung immer angeben. Außerdem ist UTF-8 heute Standard. Es wäre daher sinnvoller, die Batch mit UTF-8 laufen zu lassen. Aber gut, wenn dir das so reicht. Weiß ja nicht, was du damit machst. Ich hoffe, das ist nicht für einen Kunden.

Dieser Beitrag wurde von Osmodia bearbeitet: 02. April 2019 - 09:13

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0