簡體   English   中英

OverflowError:>編碼字符串時不支持的UTF-8序列長度

[英]OverflowError: Unsupported UTF-8 sequence length when > encoding string

在Twisted資源中,我將返回一個json編碼的dict作為下面的響應var。 這些數據是一個包含姓名,guid和其他幾個字段長度少於32個字符的5個人的列表,因此不是大量的數據。

我經常得到這個OverflowError異常,但我不太明白不支持的utf-8序列長度是指什么。

self.request.write(ujson.dumps(response))

exceptions.OverflowError:編碼字符串時不支持的UTF-8序列長度

只是注意到我最近遇到了同樣的錯誤,並且可以給出一點背景知識。

如果你看到這個,你可能會嘗試用python中的ujson json編碼一個Mongo對象。

使用本機python庫,我們得到一個更有用的錯誤消息:

TypeError: ObjectId('510652d322fc956ca9e41342') is not JSON serializable

ujson試圖解析一個ObjectId python對象並迷路。 有一些選項,最直接的是在保存之前從Mongo擦除'_id'字段。 您還可以將ujson子類化,以某種方式解析或將ObjectIds解析為一個簡單的字符串。

如有疑問,請查看來源: http//code.google.com/p/rapidjson/source/browse/trunk/thirdparty/ultrajson/ultrajsonenc.c

當UTF-8長度為5或6個字節時,會發生此錯誤。 這個JSON實現沒有實現。 如果您在瀏覽器中使用數據,那么這些字符將無效,因為它們超出了UTF-16的范圍。

如果這經常發生,我會感到驚訝; 它只發生在U + 1FFFFF上的Unicode代碼點上,這種情況非常罕見,大多數Python版本甚至不支持Unicode字符串,因為它超出了這個范圍。 您應該找出為什么這些字符會出現在您的數據中。

暫無
暫無

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

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