Michael Parker <parkerm@pobox.com> writes:
> sub bytea_esc {
> my ($str) = @_;
> my $buf = "";
> foreach my $char (split(//,$str)) {
> if (ord($char) == 0) { $buf .= "\\\\000"; }
> elsif (ord($char) == 39) { $buf .= "\\\\047"; }
> elsif (ord($char) == 92) { $buf .= "\\\\134"; }
> else { $buf .= $char; }
> }
> return $buf;
> }
Oh, I see the problem: you forgot to convert " to a backslash sequence.
It would probably also be wise to convert anything >= 128 to a backslash
sequence, so as to avoid any possible problems with multibyte character
encodings. You wouldn't see this issue in a SQL_ASCII database, but I
suspect it would rise up to bite you with other encoding settings.
regards, tom lane