Convert between Charsets in a plsql stored procedure (ora10g)
Date: Mon, 25 Apr 2005 16:28:16 +0200
Message-ID: <1114439277.922700_at_newsmaster-03.atnet.at>
Hello!
I have Oracle 10g using AL32UTF8 as internal charset.
I have a documents table where uploaded files (I'm using modplsql web-gateway (release 8i)) are stored in a blob-column. I upload a CSV-File to this table which is in ISO 8859-1 Charset. I now need to convert this binary data (which is in fact all character-data) into utf-8.
I'm currently using this self-written function to do the conversion:
FUNCTION converttoclob(
p_blob IN BLOB,
p_clob OUT CLOB)
RETURN PLS_INTEGER IS
t_dest_offset PLS_INTEGER := 1;
t_src_offset PLS_INTEGER := 1;
t_blob_csid NUMBER := s2o_lob.default_csid;
t_lang_context PLS_INTEGER := s2o_lob.default_lang_ctx;
t_warning PLS_INTEGER;
BEGIN
s2o_lob.createtemporary(p_clob, TRUE);
s2o_lob.converttoclob(
p_clob,
p_blob,
s2o_lob.lobmaxsize,
t_dest_offset,
t_src_offset,
t_blob_csid,
t_lang_context,
t_warning);
RETURN t_warning;
END; When I do
converttoclob(t_blob, t_clob);
the umlauts and non us-ascii chars are getting converted to multibyte chars. But however this is NOT UTF8. (I wasn't able to figure out what encoding/charset the output is in) Also after this conversion us-ascii-chars immediately following special chars (like german umlauts, euro-sign, etc.) are sometimes stripped of or converted to odd characters too.
I did not find any documentation further explaining the csid and lang_context parameters, maybe I could solve my problem with these.
The second Problem is closely related:
I have a varchar2 variable with text including umlauts, special-chars, etc. As the Database is AL32UTF8 the varchar2data is UTF8 too. I now want this to be converted to ISO 8859-1 Charset which I will then convert to blob (the data could be converted to blob in the process of converting it to latin1 too) to encode it with base64 or quoted-printable and send it via mail.
I don't have a clue here too..
Thx a lot for your Help!
regards,
Michael Postmann Received on Mon Apr 25 2005 - 16:28:16 CEST
