除了PyYAML,有沒有正確處理unicode
/str
的任何安全的Python數據序列化庫?Python保存正確處理str/unicode的序列化?
例如:
>>> json.loads(json.dumps([u"x", "x"]))
[u'x', u'x'] # Both unicode
>>> msgpack.loads(msgpack.dumps([u"x", "x"]))
['x', 'x'] # Neither are unicode
>>> bson.loads(bson.dumps({"x": [u"x", "x"]}))
{u'x': [u'x', 'x']} # Dict keys become unicode
>>> pyamf.decode(pyamf.encode([u"x", "x"])).next()
[u'x', u'x'] # Both are unicode
注意,我想向串行成爲安全(所以pickle
和marshel
都出來了),並且PyYAML是一種選擇,但我不喜歡YAML的複雜性,所以我'想知道是否有其他選擇。
編輯:似乎對我的數據的性質有一些困惑。其中一些是Unicode(例如,名稱),其中一些是二進制的(例如,圖像)...因此,混淆了unicode
和str
的序列化庫對於我來說和迷惑"42"
和42
的庫一樣無用。
您確定您需要保留info是數據中的「unicode」還是「bytes」?不能在執行'load'的方法中處理? – agf
是的,我很確定...有兩個原因。首先,如果'unicode'被用作一個函數的關鍵字參數(ex,'foo(** {u「bar」:42})'),那麼Python 2.6會爆炸,然後我會處理一些'unicode'數據和一些'bytes'數據,如果我的序列化庫會爲我保留這些數據,它將非常好。 –