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. 参考网站,例如FileFormat.info
  2. 确定您的十进制编码值。在这种情况下,chr(50093),即拉丁小写字母 I,其十进制编码值为 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 回答