0

dbms_xmlgenファイルの生成を支援するために使用していXMLます。しかし、それは私のchr(50093)価値をエンコードしていません。出力をファイルに保存し、IE9 を使用してファイルを表示すると、IE9 から次のメッセージが表示されます

An invalid character was found in text content. 
Error processing resource 'file:c/temp/XML_analysis/xml_aaa.xml'.

D

これが私のサンプル作品です:

 set serveroutput on;
 declare 
 cursor error_item is
 with error_row as
 (select 'D' || chr(50093) || 'a' as lname from dual)
  select lname from error_row;

 line1 varchar2(100) :=  '<?xml version="1.0" encoding="UTF-8" ?>';
 line2 varchar2(100) := '<word>';
 line3 varchar2(100);
 line4 varchar2(100) := '</word>';

 begin

 open error_item;
 fetch error_item into line3;
 close error_item;
 line3 := dbms_xmlgen.convert(line3);
 dbms_output.put_line(line1);
 dbms_output.put_line(line2);
 dbms_output.put_line(line3);
 dbms_output.put_line(line4);

 end;

このOrafaq.comサイトを参考にしました。

質問:

  1. なぜdbms_xmlgen.convertエンコードしないのchr(50093)ですか?

  2. Oracle メソッドを使用して UTF8 文字セットを xml エンコードする方法について、どこで詳しく知ることができますか?

4

1 に答える 1

0

文字をエンコードする 1 つの方法を次に示します。

  1. FileFormat.infoなどの参照サイト
  2. 10 進エンコード値を決定します。この場合、chr(50093) (ラテン語の小文字 I 急性) の 10 進エンコード値は 237 です。
  3. 237 に&#文字を追加し、;. Oracle では、次のように replace() を使用してこれを行うことができます。replace('string with characters',chr(50093),'&#237;'

この場合、line3割り当てステートメントを次のように置き換えます

line3 := replace(line3,chr(50093),'&#237;');

XML リーダーで出力を読み取ることができるはずです。

于 2013-08-30T16:38:34.443 に答える