我知道在所有情况下我都需要逃避这些:
quot "
amp &
apos '
lt <
gt >
但是有口音的国际字符,或者俄罗斯字符来命名一对呢?当我的编码指令设置为 UTF-8 时,是否需要转义这种类型的字符?
如果我将编码指令设置为 ASCII 怎么办?我还需要转义所有这些角色吗?
这是我尝试使用 Nokogiri(lib2xml) 重现的 XML 示例(来自遗留系统):
<?xml version="1.0" encoding="UTF-8"?>
<DESCRIPTION lang="rus">
<SHORT_DESCRIPTION>МОДУЛЬ- ELECTRONIC OUTPUT 120 V DC 5 mA</SHORT_DESCRIPTION>
<LONG_DESCRIPTION>МОДУЛЬ- ТИП ELECTRONIC OUTPUT ВХОД 120 V DC ВЫХОД 5 mA ИСТОЧНИК ПИТАНИЯ 120 V DC ДОПОЛНИТЕЛЬНАЯ ДЕТАЛЬ 1 ANALOG SM322-8S TOR</LONG_DESCRIPTION>
</DESCRIPTION>
您可以看到示例中的指令说 UTF-8,但它们已经转义了很多字符,Nokogiri 只有在我指定 ASCII 编码指令时才会转义的字符。这让我感到困惑。
编辑 2:如果我不向 Nokogiri 传递编码指令,则生成的 XML 会将所有俄语字符留在其本机西里尔字母中,但这与我需要复制的 XML 不一致。