Sonderzeichen aus xml Datei umwandeln
-
Also die XML Datei ist utf-8 kodiert und Ich benutze den Boarland 6.0 und der arbeitet soweit es mir bekannt ist mit ascii
-
Naja, schau doch mal in die ASCII-Tabelle. Da wirst du keine deutschen Umlaut finden, weil das eben die Tabelle für den _American_ Standard Code for Information Interchange ist und bei denen gibt's keine Umlaute.
Mir ist allerdings trotzdem nicht so ganz klar, was du damit meinst, wenn du sagst, Borland 6.0 benutzt ASCII. Ansonsten wär's auch ganz interessant zu wissen, wie diese Suchfunktion genau aussieht, die du da benutzen willst.
Also, erklär dich mal
~moagnus
-
Hi,
Dein Problem wird wohl nicht die xml sein sondern die console, die kann nämlich keine Umlaute darstellen.
Bsp.:
Um auf der Konsole ein Ä auszugeben musst du das schreiben:cout << "\x8E" << endl;
In meinem Beispiel wurde die Hexdezimal zahl von Ä benutzt, wie du die rausbekommst überlasse ich dir damit du auch noch was zu tun hast.
MFG ReduX
-
ReduX schrieb:
Hi,
Dein Problem wird wohl nicht die xml sein sondern die console, die kann nämlich keine Umlaute darstellen.
Bsp.:
Um auf der Konsole ein Ä auszugeben musst du das schreiben:cout << "\x8E" << endl;
In meinem Beispiel wurde die Hexdezimal zahl von Ä benutzt, wie du die rausbekommst überlasse ich dir damit du auch noch was zu tun hast.
MFG ReduX
Hallo,
danke für den Hinweis. Bei mir funktionert's.
Ψ
-
Hi danke schon mal für die Antworten
Also mein Problem liegt nicht darin das auszugen sondern es zu finden
Hier mal mein ganzer code
#include <iostream>
#include <string>
#include <tinyxml.cpp>
#include <tinyxml.h>
#include <tinystr.h>
#include <tinyxmlerror.cpp>
#include <tinyxmlparser.cpp>
#include <tinystr.cpp>
#include <tinystr.h>using namespace std;
void umlautAusgabe(const char* text)
{
string strtext;
strtext = text;if ((strtext.find("\x8E")>0) && (strtext.find("\x8E")<= strtext.length()))
strtext.replace(strtext.find("\x8E"), 1, "Ae", 2);if ((strtext.find("\x84")>0) && (strtext.find("\x84")<= strtext.length()))
strtext.replace(strtext.find("\x84"), 2, "ae", 2);if ((strtext.find("\x99")>0) && (strtext.find("\x99")<= strtext.length()))
strtext.replace(strtext.find("\x99"), 1, "Oe", 2);if ((strtext.find("\x94")>0) && (strtext.find("\x94")<= strtext.length()))
strtext.replace(strtext.find("\x94"), 1, "oe", 2);if ((strtext.find("\x9A")>0) && (strtext.find("\x9A")<= strtext.length()))
strtext.replace(strtext.find("\x9A"), 1, "Ue", 2);if ((strtext.find("\x81")>0) && (strtext.find("\x81")<= strtext.length()))
strtext.replace(strtext.find("\x81"), 1, "ue", 2);text;
cout << strtext << endl;
}int main(int argc, char* argv[])
{
std::string dTag,dMonat,dSt;
const char* suchtext;
TiXmlElement* ebene2;cout << "Programm zum Auslesen der Losung des Tages aus dem Jahr 2008" << endl;
cout << endl;
cout << "Bitte Geben Sie den Monat ein(2 stellig 01,02,03,..) usw.: ";
cin >> dMonat;
cout << endl;
cout << "Bitte geben Sie den Tag ein(2 stellig 01,02,03,..) usw.: ";
cin >> dTag;dSt = dTag + dMonat + "TEST";
TiXmlDocument doc( "Losungen.xml" );
doc.LoadFile();dSt = "2008-" + dMonat + "-" + dTag + "T00:00:00";
cout << "Suche nach: " << dSt << endl;
cout<<endl;TiXmlElement* root = doc.FirstChildElement();
TiXmlElement* ebene1 = root->FirstChildElement();do
{
ebene2 = ebene1->FirstChildElement();
if ( !(strcmp(ebene2->GetText(),dSt.c_str())))
{
ebene2 = ebene2->NextSiblingElement("Wtag");
cout << ebene2->GetText() << ",den " << dTag << "." << dMonat << ".2008" << endl;ebene2 = ebene2->NextSiblingElement("Losungstext");
umlautAusgabe(ebene2->GetText());ebene2 = ebene2->NextSiblingElement("Losungsvers");
umlautAusgabe(ebene2->GetText());ebene2 = ebene2->NextSiblingElement("Lehrtext");
umlautAusgabe(ebene2->GetText());ebene2 = ebene2->NextSiblingElement("Lehrtextvers");
umlautAusgabe(ebene2->GetText());
}
ebene1 = ebene1->NextSiblingElement();
}
while(ebene1);getchar();
getchar();
return 0;}
DAs auslesen der datei und wiedergabe in der konsole geht super gut nur enthält der text auch sonderzeichen und die gibt die konsole in nem zeichenwuscht aus
Hier mal die Grunddatei die ich auslesen muß www.losung.de/download/download.php
(Schhulübung)
Meine frage ist wie ich die sonderzeichen da rauslesen kann und ändern (muß in ae ue usw ändern)
-
Wäre das Umstellen der Konsole auf UTF8 nicht einfacher?
-
Na ja warscheinlich schon mein dozent will aber das ich das auslese und umwandle leider
-
blade1977 schrieb:
Hi danke schon mal für die Antworten
Also mein Problem liegt nicht darin das auszugen sondern es zu finden
In UTF-8 nehmen die Umlaute 2 Byte ein. Wenn die XML-Datei UTF-8 ist musst du nach dem UTF-8 'Ä' suchen Das wird dann zu "\xc3\x84"
-
-
Das ist MFC oder?
Dann bringt's dem OP wenig - MFC gibt's für Borland nicht IMO