Nella mia pagina coldfusion chiamo una procedura PL/SQL. Il modulo HTML è codificato utilizzando UTF-8, il DB Oracle ha la codifica WE8ISO8859P1
. Quindi, che tipo di conversione avviene nel caso di i_value
di seguito?Quale codifica viene utilizzata quando si chiama una procedura Oracle PL/SQL
Sono particolarmente interessato a ciò che accade a MS Word citazione di sinistra (che è codificata in UTF-8 come E28098
). Quando decodifico i_value
in PL/SQL, questo diventa 18
(Hex). Considerando che è U + 2018 questo ha un senso, ma mi chiedo ancora perché lo 20
sia ingoiato.
<CFSTOREDPROC PROCEDURE = "my_schema.lib.write_field" datasource="#datasource#">
<cfprocparam cfsqltype="CF_SQL_VARCHAR" variable="i_name" value="remark" type="In">
<cfprocparam cfsqltype="CF_SQL_VARCHAR" variable="i_value" value="#Form.remark#" type="In">
</CFSTOREDPROC>
Non sono un esperto di CF, quindi nessuna risposta, solo un commento: ogni ambiente client (e CF è un client per il DB Oracle) che si connette a un DB Oracle utilizza un env NLS_LANG. variabile per determinare il set di caratteri del client da utilizzare per le connessioni DB Oracle. Quindi, c'è un set di caratteri sul lato Oracle DB (WE8ISO8859P1), il secondo sulla pagina HTML (UTF8), il terzo sul server ColdFusion, presumo, e c'è, molto probabilmente, un quarto impostato per il Client Oracle in uso nel tuo server CF. Presumo che dovrai trovare quella particolare opzione e configurarla ad es. ENGLISH_AMERICA.AL32UTF8. – nop77svk
La variabile NLS_LANG, ovviamente, può essere scambiata per qualche tipo di parametro dedicato nella connessione del DB Oracle. (ODP.NET lo fa, se ricordo male.) Comunque, il mio commento si applica - dovrete trovare la proprietà di connessione DB e configurarla. – nop77svk
@ nop77svk Anche dopo aver conosciuto la codifica del client, vorrei sapere che tipo di conversione avviene. Ho notato che alcuni dei byte sembrano essere ingoiati quando vengono inviati al DB, ad es. la virgoletta singola sinistra (0x2018 in UTF-16) diventa solo 0x18 nel DB. – Roland