Holger Schoenen writes:

> ERROR:  invalid byte sequence for encoding "UTF8": 0xe46973
>     Command was: --
[...]
> -- Started on 2006-09-15 14:56:51 Westeuropäische Normalzeit

The same problem was recently reported on the pgsql-de-allgemein list.

Would just avoiding %Z in Win32's strftime be an acceptable solution?
elog.c is already doing this, however because of the length of the
zone names, not the localization problem.  The attached patch is
completely untested because I don't have access to a win32 box.

regards,
andreas

Index: src/bin/pg_dump/pg_backup_archiver.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/bin/pg_dump/pg_backup_archiver.c,v
retrieving revision 1.137
diff -c -r1.137 pg_backup_archiver.c
*** src/bin/pg_dump/pg_backup_archiver.c        14 Oct 2006 23:07:22 -0000      
1.137
--- src/bin/pg_dump/pg_backup_archiver.c        20 Oct 2006 18:59:11 -0000
***************
*** 2780,2785 ****
  {
        char            buf[256];
  
!       if (strftime(buf, 256, "%Y-%m-%d %H:%M:%S %Z", localtime(&tim)) != 0)
                ahprintf(AH, "-- %s %s\n\n", msg, buf);
  }
--- 2780,2793 ----
  {
        char            buf[256];
  
!       if (strftime(buf, 256,
!                                /* Win32 timezone names are long and localized 
and
!                                 * can interfere with utf-8 dumps */
! #ifndef WIN32
!                                "%Y-%m-%d %H:%M:%S %Z",
! #else
!                                "%Y-%m-%d %H:%M:%S",
! #endif
!                                localtime(&tim)) != 0)
                ahprintf(AH, "-- %s %s\n\n", msg, buf);
  }
Index: src/bin/pg_dump/pg_dumpall.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/bin/pg_dump/pg_dumpall.c,v
retrieving revision 1.84
diff -c -r1.84 pg_dumpall.c
*** src/bin/pg_dump/pg_dumpall.c        7 Oct 2006 20:59:05 -0000       1.84
--- src/bin/pg_dump/pg_dumpall.c        20 Oct 2006 18:59:12 -0000
***************
*** 1320,1325 ****
        char            buf[256];
        time_t          now = time(NULL);
  
!       if (strftime(buf, 256, "%Y-%m-%d %H:%M:%S %Z", localtime(&now)) != 0)
                printf("-- %s %s\n\n", msg, buf);
  }
--- 1320,1333 ----
        char            buf[256];
        time_t          now = time(NULL);
  
!       if (strftime(buf, 256,
!                                /* Win32 timezone names are long and localized 
and
!                                 * can interfere with utf-8 dumps */
! #ifndef WIN32
!                                "%Y-%m-%d %H:%M:%S %Z",
! #else
!                                "%Y-%m-%d %H:%M:%S",
! #endif
!                                localtime(&now)) != 0)
                printf("-- %s %s\n\n", msg, buf);
  }

---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
       subscribe-nomail command to [EMAIL PROTECTED] so that your
       message can get through to the mailing list cleanly

Reply via email to