簡體   English   中英

用xml編寫編碼

[英]Write encoding in xml

我使用Django REST Framework ,一切正常,但是我有一個問題。

在result-xml中,我有字符串:

<?xml version="1.0" ?>

但我確實需要將其更改為:

<?xml version="1.0" encoding="utf-8"?>

我找不到有關它的信息。 這個怎么做?

謝謝!

我相信django rest框架的最新版本將自動處理此問題。 當我使用以下代碼對其進行測試時,我可以清楚地看到所需的標題:

from rest_framework.renderers import XMLRenderer
renderer = XMLRenderer()
print renderer.render('foo')

>>> '<?xml version="1.0" encoding="utf-8"?>\n<root>foo</root>'

如果無法升級依賴項,則可以按照下面的步驟進行操作,以創建自己的Renderer子類,該子類將添加正確的標頭。 下面的所有示例都是針對該庫的最新版本的,因此您發現的內容可能有所不同。

django rest框架使用Renderer來寫出內容。 這些在rest_framework/renderers.py中可用。 這是您要更改的部分:

    xml = SimplerXMLGenerator(stream, self.charset)
    xml.startDocument()
    xml.startElement("root", {})

碰巧它使用的是django SimplerXMLGenerator ,它本身是基於xml.sax.saxutils.XMLGenerator 我在系統上發現以下代碼:

$ python -c 'import xml.sax.saxutils; print xml.sax.saxutils.__file__'
/usr/lib/python2.7/xml/sax/saxutils.pyc

有一個與此相關的PY文件。 在該文件中,我可以找到XMLGenerator類,它包含一個編碼參數:

    def startDocument(self):
    self._write('<?xml version="1.0" encoding="%s"?>\n' %
                    self._encoding)

在最新版本中,字符集已經設置為utf-8 ,因此它會生成您所需的標頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM