我知道在所有情况下我都需要逃避这些:
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,但它们已经转义了许多字符,当我指定ASCII编码指令时,Nokogiri只会逃脱这些字符。这让我很困惑。
编辑2:如果我没有向Nokogiri传递编码指令,则生成的XML会将所有俄语字符保留为其原生的西里尔字母,但这与我需要复制的XML不一致。
答案 0 :(得分:2)
如果有以下情况,您只需要用字符引用来表示字符:
ASCII中没有很多字符,因此如果您使用ASCII编码XML,则必须对许多字符使用字符引用。
不要用ASCII编码XML。 XML的默认编码是UTF-8,它得到了很好的支持。