如果我的XML文档指令指定UTF-8编码,我还需要转义字符吗?



我知道在所有情况下我都需要转义:

quot  "
amp   &
apos  '
lt    <
gt    >

但是有口音的国际字符,或者给一对夫妇命名的俄罗斯字符呢?当我的编码指令设置为UTF-8时,我需要转义这种类型的字符吗?

如果我将编码指令设置为ASCII会怎么样?我还需要转义所有这些字符吗?

这是我尝试使用Nokogiri(lib2xml)复制的XML示例(来自遗留系统):

<?xml version="1.0" encoding="UTF-8"?>
  <DESCRIPTION lang="rus">
    <SHORT_DESCRIPTION>&#1052;&#1054;&#1044;&#1059;&#1051;&#1068;- ELECTRONIC  OUTPUT 120 V DC 5 mA</SHORT_DESCRIPTION>
    <LONG_DESCRIPTION>&#1052;&#1054;&#1044;&#1059;&#1051;&#1068;- &#1058;&#1048;&#1055; ELECTRONIC  OUTPUT &#1042;&#1061;&#1054;&#1044; 120 V DC &#1042;&#1067;&#1061;&#1054;&#1044; 5 mA &#1048;&#1057;&#1058;&#1054;&#1063;&#1053;&#1048;&#1050; &#1055;&#1048;&#1058;&#1040;&#1053;&#1048;&#1071; 120 V DC &#1044;&#1054;&#1055;&#1054;&#1051;&#1053;&#1048;&#1058;&#1045;&#1051;&#1068;&#1053;&#1040;&#1071; &#1044;&#1045;&#1058;&#1040;&#1051;&#1068; 1 ANALOG SM322-8S TOR</LONG_DESCRIPTION>
 </DESCRIPTION>

您可以看到示例中的指令显示UTF-8,但是它们转义了很多字符,Nokogiri只在指定ASCII编码指令时转义这些字符。这就是我困惑的地方。

编辑2:如果我不向Nokogiri传递编码指令,生成的XML将保留所有俄罗斯字符的原生西里尔字母,但这与我需要复制的XML不一致。

只需要在以下情况下使用字符引用来表示字符:

  • 在当前上下文中具有特殊意义(所以您列出的五个字符有时只需要编码)
  • 在字符编码中不存在,文件被编码为

ASCII没有很多字符,所以如果你用ASCII编码你的XML,你将不得不为许多字符使用字符引用。

不要用ASCII编码XML。XML的默认编码是UTF-8,它得到很好的支持。

相关内容

  • 没有找到相关文章

最新更新