Thread: EBCDIC conversion

EBCDIC conversion

From
Mike Blackwell
Date:
We have a need to check certain text fields to be sure they'll convert properly to EBCDIC.  A check constraint with a convert() was the initial thought, but there doesn't seem to be a default conversion from UTF8 to EBCDIC.  Does anyone have an implementation they'd care to share, or suggestions on the best way to implement the conversion function?  Our PostgreSQL servers currently only have the default languages installed.



Re: EBCDIC conversion

From
David W Noon
Date:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 27/03/14 19:08, Mike Blackwell wrote:
> We have a need to check certain text fields to be sure they'll
> convert properly to EBCDIC.  A check constraint with a convert()
> was the initial thought, but there doesn't seem to be a default
> conversion from UTF8 to EBCDIC.  Does anyone have an
> implementation they'd care to share, or suggestions on the best way
> to implement the conversion function?  Our PostgreSQL servers
> currently only have the default languages installed.

I think the real issue is that you need icu or libiconv installed.
You will also need to know which EBCDIC code page you want: U.S.
EBCDIC is cp37, IIRC.

I suspect you will need to write a C or Python function that performs
a test conversion, using icu or libiconv, and return a Boolean result.
It should not be too difficult if you can write C or Python.
- --
Regards,

Dave  [RLU #314465]
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
david.w.noon@googlemail.com (David W Noon)
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iEYEARECAAYFAlM0wtYACgkQogYgcI4W/5TYsgCgwGf/HBL7XHGc5HrzYiLSkXcZ
nv8An1Ysq9DEJw2vn/mRpY2UWv5sFHna
=grZk
-----END PGP SIGNATURE-----


Re: EBCDIC conversion

From
David W Noon
Date:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 28/03/14 00:31, David W Noon wrote:
> I think the real issue is that you need icu or libiconv installed.
> You will also need to know which EBCDIC code page you want: U.S.
> EBCDIC is cp37, IIRC.
>
> I suspect you will need to write a C or Python function that
> performs a test conversion, using icu or libiconv, and return a
> Boolean result. It should not be too difficult if you can write C
> or Python.

Since I had a few minutes tonight, I created a quick hack in Python.
It should be attached to this message, unless the list server removes it.

Here is a sample usage in psql:

dwn=# \i ./check_code_page.sql
CREATE FUNCTION
dwn=# select check_code_page('abcxyz', 'cp037');
 check_code_page
- -----------------
 t
(1 row)

dwn=# select check_code_page('abcä', 'cp037');
 check_code_page
- -----------------
 f
(1 row)

You'll note that the a-umlaut character fails in the conversion to
cp037 (U.S. EBCDIC).
- --
Regards,

Dave  [RLU #314465]
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
david.w.noon@googlemail.com (David W Noon)
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iEYEARECAAYFAlM2EKAACgkQogYgcI4W/5QgYACcDRjE4Ov9GomHX/6RWP+vJnsG
7Y8AoK3K7IbHVLmAmBV8prdvNy9sJ3Pm
=04Rb
-----END PGP SIGNATURE-----

Attachment