Avatar billede cen Nybegynder
16. september 2005 - 14:39 Der er 3 kommentarer og
1 løsning

MYSQL API i C problemer med danske tegn i mysql i c

Hey.

Vi står med et irriternede problem i noget c kode. Vi bruger mysql client lib (libmysql) i windows.
Problemet består i at når vi prøver at udfører en kommando hvor æ ø å indgår, kommer der underlige tegn i stedet.
Vi har sørget for at vælge latin-1 char settet (ISO-8859-1) - hvad kan der mon være galt?
Vi har kigget på query strengen, og der er ingen problemer der.

Koden er som følger:
int db_connect(char *server, char *user, char *password, char *database)
{
      if(mysql_init(&mysql)==NULL)
    {
          printf("Failed to initate MySQL connection\n");
          exit(1);
    }
 
      if (!mysql_real_connect(&mysql,server,user,password,NULL,0,NULL,0))
    {
          printf( "Failed to connect to MySQL: Error: %s\n", mysql_error(&mysql));
          exit(1);
    }
      if(mysql_select_db(&mysql,database )==0)/*success*/
        printf( "Database Selected\n");
      else
    printf( "Failed to connect to Database: Error: %s\n", mysql_error(&mysql));
}

int db_insert(char *number, char *text)
{
    bzero(query, strlen(query));
    strcpy( query , "SET CHARACTER SET \'latin1\'" );

    if(mysql_exec_sql(&mysql,query)==0)/*success*/
        printf( "Char set\n");
      else
        printf( "Failed to set char set\n", mysql_error(&mysql));
       
    bzero(query, strlen(query));
    text[strlen(text) - 1] = '\0';
    text[strlen(text) - 2] = '\0';
      sprintf(query,"INSERT INTO `sms` (`nr`,`tekst` ,`tjek`) VALUES ('%s', '%s', 'no');", number, text);
      if(mysql_exec_sql(&mysql,query)==0)/*success*/
        printf( "Record Added\n");
      else
        printf( "Failed to add records: Error: %s\n", mysql_error(&mysql));
}

int db_close()
{
      mysql_close(&mysql);
}

På forhånd tak.
Avatar billede arne_v Ekspert
16. september 2005 - 15:12 #1
hvorfor er der \ foran ' i:

    strcpy( query , "SET CHARACTER SET \'latin1\'" );

?
Avatar billede arne_v Ekspert
16. september 2005 - 15:14 #2
de variable i inserter er de i CP-850/DOS eller ISO-8859-1/ISOLatin1/CP-1252/ANSI/Windows
eller UTF-8 ?
Avatar billede cen Nybegynder
16. september 2005 - 15:23 #3
De er i latin1 - vi kan debugge, og få vist query uden fejl. Vi har endda prøvet at udfører den fra mysql's klient, og der gør den som den skal. Man når vi bruger libmysql laver den bøvl
Avatar billede cen Nybegynder
25. oktober 2005 - 11:45 #4
.. lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester