Bonjour,
Ci-dessous le corps d'une procédure stockée permettant de transformer en HTML un document (ici un document Word) enregistré dans une colonne de type BLOB ((j'ai omis le prototype de la procédure volontairement)) :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 ... ctx_doc.markup (index_name => 'documents_indx', textkey => p_doc_id, text_query => p_texte, restab => 'my_markup_table', plaintext => FALSE, starttag => '<FONT COLOR="RED"><B><A NAME=HIT%CURNUM HREF=#HIT%NEXTNUM>', endtag => '</A></B></FONT>', prevtag => '', nexttag => '' ); ...
J'ai un problème pour récupérer dans un encodage correct (j'ai des ??? à l'envers alors que je m'attends à voir du texte en grec (que je ne comprends pas plus ;)) ) le contenu d'une colonne de type BLOB, le résultat de la procédure ci-dessus produit ce HTML dans ma table de destination my_markup_table :
Code:
1
2
3
4
5
6
7
8
9
10
11 ... <p><font face="Times New Roman" size="3">¿¿¿¿¿¿</font> <p><font face="Times New Roman" size="3"><b>¿¿¿¿¿¿¿ ¿¿¿ ¿¿¿¿¿¿¿¿¿</b></font> <p><font face="Times New Roman" size="3"><b>¿¿¿</b></font> <p><font face="Times New Roman" size="3"><b>¿¿¿ ¿¿¿ ¿¿¿¿¿¿¿¿¿¿¿ ¿¿¿ ¿¿¿¿¿¿¿ 2002/72/¿¿ ¿¿¿¿¿¿¿ ¿¿ ¿¿ ¿¿¿¿¿¿¿¿ ¿¿¿¿¿ ¿¿¿ ¿¿¿¿¿¿¿¿¿¿¿ ¿¿¿ ¿¿¿¿¿¿¿¿¿¿¿¿ ¿¿ ¿¿¿¿¿¿ ¿¿ ¿¿¿¿¿ ¿¿ ¿¿¿¿¿¿¿ </b></font> <p><font face="Times New Roman" size="3">(¿¿¿¿¿¿¿¿ ¿¿¿ ¿. ¿. ¿¿¿¿¿¿¿¿¿)</font> ...
Pour informations :
Version Oracle avec la commande :
Code:SELECT * FROM SYS.V_$VERSION;
Encodage de la base avec la commande :Code:
1
2
3
4
5
6 Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi PL/SQL Release 10.2.0.3.0 - Production CORE 10.2.0.3.0 Production TNS for Solaris: Version 10.2.0.3.0 - Production NLSRTL Version 10.2.0.3.0 - Production
Code:
1
2 select * from nls_database_parameters where parameter='NLS_CHARACTERSET'
Le code de la procédure stockée permettant d'enregistrer les documents (j'ai omis le prototype de la procédure volontairement) :Code:NLS_CHARACTERSET AL32UTF8
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 ... INSERT INTO VIS_DOCUMENTS_T (doc_id, doc_name, doc_contents, doc_title, doc_type, doc_format, doc_language, doc_size, doc_number, doc_version, doc_part, doc_lang_source, trans_int_ext, req_date, req_code, req_year, req_service) VALUES (doc_seq.NEXTVAL , p_file_name, EMPTY_BLOB(), v_DOC_TITLE, v_DOC_TYPE, v_DOC_FORMAT, v_DOC_LANGUAGE, v_DOC_SIZE, v_DOC_NUMBER, v_DOC_VERSION,v_DOC_PART, v_DOC_LANG_SOURCE, v_TRANS_INT_EXT, v_REQ_DATE, v_REQ_CODE, v_REQ_YEAR, v_REQ_SERVICE) RETURN doc_contents INTO v_blob; v_bfile := BFILENAME('DOCUMENTS_IN', p_file_name); Dbms_Lob.Fileopen(v_bfile, Dbms_Lob.File_Readonly); Dbms_Lob.Loadfromfile(v_blob, v_bfile, Dbms_Lob.Getlength(v_bfile)); Dbms_Lob.Fileclose(v_bfile); ...
Script de création de la table MY_MARKUP_TABLE :
Code:
1
2
3
4
5 CREATE TABLE MY_MARKUP_TABLE ( QUERY_ID NUMBER, DOCUMENT CLOB )
Auriez vous une solution pour résoudre mon souci ? des pistes ?
Merci d'avance