Character encoding Oracle APEX中文件预览的编码问题

Character encoding Oracle APEX中文件预览的编码问题,character-encoding,blob,oracle-apex,Character Encoding,Blob,Oracle Apex,我正在尝试在Oracle APEX 20.1中创建文件预览功能 我创建了一个带有before头进程的新页面 declare l_bfile BFILE; l_blob BLOB; vv_name varchar2(1000); vv_ext varchar2(1000); vv_mime_type varchar2(1000); vv_download_name varchar2(1000); ve_no_file EXCEPTION; begin IF :P10003_DIR = 'T

我正在尝试在Oracle APEX 20.1中创建文件预览功能

我创建了一个带有before头进程的新页面

declare
l_bfile BFILE;
l_blob BLOB;
vv_name varchar2(1000);
vv_ext varchar2(1000);
vv_mime_type varchar2(1000);
vv_download_name varchar2(1000);
ve_no_file EXCEPTION;
  
begin

IF :P10003_DIR = 'TYPE_1' THEN
select filename ,regexp_substr(atrybut24, '[^.]+', 1, 2) into vv_name,vv_ext from table1 where id = :P10003_ID;

ELSIF :P10003_DIR = 'TYPE_2' THEN
select LOG,'LOG' into vv_name,vv_ext from table1 where id = :P10003_ID;

END IF;

vv_download_name := vv_name;

IF upper(vv_ext) = 'PDF' THEN
    vv_mime_type := 'application/pdf';
ELSIF upper(vv_ext) = 'XLSX' THEN
    vv_mime_type := q'~application/vnd.openxmlformats-officedocument.spreadsheetml.sheet~';
ELSIF upper(vv_ext) = 'LOG' THEN
    vv_mime_type := 'text/plain';
    vv_download_name := vv_download_name || '.txt';
END IF;

IF dbms_lob.fileexists(bfilename(:P10003_DIR, vv_name)) = 1 THEN 

    dbms_lob.createtemporary(l_blob,TRUE);
    
    l_bfile := BFILENAME(:P10003_DIR, vv_name);
    
    DBMS_LOB.OPEN(l_bfile, DBMS_LOB.LOB_READONLY);
    DBMS_LOB.OPEN(l_blob, DBMS_LOB.LOB_READWRITE);
    
    dbms_lob.loadfromfile(l_blob,l_bfile,dbms_lob.getlength(l_bfile)); 
    owa_util.mime_header(NVL(vv_mime_type,'application/octet'),FALSE,'UTF-8');

    htp.p('Content-Type: ' || vv_mime_type || '; charset=UTF-8');
    htp.p('Content-Disposition: inline');
    owa_util.http_header_close;
    
    DBMS_LOB.CLOSE(l_bfile);
    dbms_lob.close(l_blob);   

    WPG_DOCLOAD.download_file(l_blob);

    
    DBMS_LOB.FREETEMPORARY(l_blob);
    
    APEX_APPLICATION.STOP_APEX_ENGINE;
    
ELSE 
    raise ve_no_file;
END IF;

EXCEPTION
    when ve_no_file then
        apex_error.add_error (
            p_message          => 'No file!',
            p_display_location => apex_error.c_inline_in_notification );
end;
它显示文件,但编码有问题。我有一个非常相似的页面来下载文件,但差异很小,这很好,编码没有问题

如何强制使用正确的字符集以避免波兰字符集出现问题

编辑: 我注意到这个文件有ASCII编码。当我把文件的编码改为UTF-8时,APEX显示的文件是正确的。 如何在从文件加载时转换blob中的characterset,或者如何在加载时设置文件的characterset