Zum Inhalt springen

LinucCWin

Mitglieder
  • Gesamte Inhalte

    2
  • Benutzer seit

  • Letzter Besuch

  1. zum ersten : die Einrückungen sind unterwegs irgenwo verloren gegangen. zweitens :"Funktioniert nicht" ist keine ausreichende Fehlerbeschreibung. --> o.k meinte, dass sich das Programm nicht mal ohne Fehler compilieren laesst. Zum Anderen hab mittlerweile gemerkt das (MultiByteToWideChar) ne reine Win32-Api Funktion ist. Jedoch habe ich noch nicht die entsprechende Funktion unter Linux für g++ gefunden. Also wer kennt ne Funktion die UTF-8 in UniCode in Ansi bzw. UTF-8 direct in ANSI umwandelt ??? :confused:
  2. Halloechen ich hab da ein Problem mit einem C-Programm das unter Windows funktioniert, jedoch unter Linux Probleme macht : Das Programm ist dazu gedacht xml-Dateien zu erzeugen. Dazu werden einige Begriffe (ANSI- oder UTF8-Format) mit einer mysql-Datenbank(Daten in UTF8-Format) abgeglichen, daher die Notwendigkeit der Zeichenumwandlung. Hier die Fehlermeldungen diss_to_xml.cpp: In function `int main(int, char**)': diss_to_xml.cpp:79: error: invalid conversion from `char*' to `unsigned char*' diss_to_xml.cpp: In function `int fakultaet_aus_Mysql(char*, char*)': diss_to_xml.cpp:112: error: `CP_UTF8' undeclared (first use this function) diss_to_xml.cpp:112: error: (Each undeclared identifier is reported only once for each function it appears in.) diss_to_xml.cpp:112: error: `WCHAR' undeclared (first use this function) diss_to_xml.cpp:112: error: `MultiByteToWideChar' undeclared (first use this function) diss_to_xml.cpp:113: error: `CP_ACP' undeclared (first use this function) diss_to_xml.cpp:113: error: `WideCharToMultiByte' undeclared (first use this function) diss_to_xml.cpp: In function `int fach_aus_Mysql(char*, char*, char*)': diss_to_xml.cpp:147: error: `MultiByteToWideChar' undeclared (first use this function) diss_to_xml.cpp:148: error: `WideCharToMultiByte' undeclared (first use this function) und der entsprechende Soure-code : /*#include <WINDOWS.H> #include <winnls.h>*/ --> erstmal auskommentiert da es so viele Fehler erzeugt #include <time.h> #include <stdio.h> #include <mysql/mysql.h> #include <stdlib.h> #include <string.h> typedef struct { char * feld[18]; } DISS; #include "diss_to_xml.h" static char fakultaet_rohling[256]; static char fach_rohling[256]; static char character_set[8]; MYSQL *mConnection, mDB; int CheckUTF8(unsigned char * buf) { strcpy(character_set,"ansi"); if (buf[0]!=0xef) return(0); if (buf[1]!=0xbb) return(0); if (buf[2]!=0xbf) return(0); strcpy(character_set,"utf8"); return(1); } int _chkstk() { return(0); } /* ************************************************** ******************* */ int main(int argc, char * argv[]) { DISS feldname; DISS diss; char buf0[32000]; char buf[64000]; mysql_init(&mDB); mConnection = mysql_real_connect(&mDB,"test","test","","test",0,0,0); if (mConnection == NULL) { printf("Es konnte keine Verbindung zur Datenbank hergestellt werden: %s\n",mysql_error(&mDB)); return 1; } strcpy(fakultaet_rohling,"select ID ********************** by ID"); strcpy(fach_rohling,"select ID ******************** by ID"); fread(buf,1,3,stdin); if (CheckUTF8(buf)==0) { fseek(stdin,0,0); } gets(buf0); XmlDateiErzeugen(&feldname,buf0); while (gets(buf)!=NULL) { XmlDateiErzeugen(&diss,buf); PrintDiss(&feldname,&diss); } mysql_close(mConnection); return(0); } /* int main */ int fakultaet_aus_Mysql(char * text,char * ID_fakultaet) { MYSQL_RES *mysql_res; MYSQL_ROW row; char query_string[256]; char uni_text[512]; char ansi_text[512]; int zaehler; if (strcmp(character_set,"utf8")==0) { MultiByteToWideChar(CP_UTF8, 0, text, -1, uni_text, sizeof(uni_text) / sizeof(WCHAR)); WideCharToMultiByte(CP_ACP, 0, uni_text, -1, ansi_text, sizeof(ansi_text), 0, 0); sprintf(query_string,fakultaet_rohling,ansi_text); } else sprintf(query_string,fakultaet_rohling,text); mysql_query(&mDB,query_string); mysql_res = mysql_store_result(&mDB); zaehler = 0; if (mysql_res!=NULL) { while ((row = mysql_fetch_row (mysql_res)) != NULL) { strcpy(ID_fakultaet,row[0]); zaehler++; } } if (zaehler!=1) { fprintf(stderr,"Fakultaet: %s nicht oder nicht eindeutig vorhanden (%d)\n",text,zaehler); strcpy(ID_fakultaet,"0"); } return(0); } int fach_aus_Mysql(char * text,char * ID_fakultaet,char * ID_fach) { MYSQL_RES *mysql_res; MYSQL_ROW row; char uni_text[512]; char ansi_text[512]; char query_string[256]; int zaehler; if (strcmp(character_set,"utf8")==0) { MultiByteToWideChar(CP_UTF8, 0, text, -1, uni_text, sizeof(uni_text) / sizeof(WCHAR)); WideCharToMultiByte(CP_ACP, 0, uni_text, -1, ansi_text, sizeof(ansi_text), 0, 0); sprintf(query_string,fach_rohling,ID_fakultaet,ans i_text); } else sprintf(query_string,fach_rohling,ID_fakultaet,tex t); mysql_query(&mDB,query_string); mysql_res = mysql_store_result(&mDB); zaehler = 0; if (mysql_res!=NULL) { while ((row = mysql_fetch_row (mysql_res)) != NULL) { strcpy(ID_fach,row[0]); zaehler++; } } if (zaehler!=1) { fprintf(stderr,"Fach: %s nicht oder nicht eindeutig vorhanden (%d) Faultaet=%s\n",text,zaehler,ID_fakultaet); strcpy(ID_fach,"0"); } return(0); } wuerde mich ueber jeden hilfreichen Tip freuen.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...