首页 > 解决方案 > UTFDataFormatException - 编码字符串太长

问题描述

在我的移动应用程序中,我有一个实现 PropertyBusinessObject 的对象,其中包含许多其他也实现此接口的对象。这个对象结构由我从服务器返回的 JSON 数据填充。当我尝试使用 writeObject() 将此对象写入 Storage 时,出现上述错误。堆栈跟踪显示它源自 com.codename1.io.Util.writeObject() 方法,它正在写入 UTF-8(限制为 64k)。开发人员指南没有提及 Storage 的任何潜在问题,而是推荐它而不是 FileSystemStorage。我的问题是,是否有解决方法/更新?我是否必须恢复将对象结构写入文件系统?谢谢。

标签: codenameone

解决方案


如果您有一个非常长的字符串,例如代表文件的内容,我建议您重新考虑一下。Codename One 中的字符串效率很低,因为我们需要将它们的表示复制到 iOS 原生层中。如果您需要的是二进制表示,那么将它们写入 UTF 也是非常浪费的。我建议使用字节数组。

序列化到存储是一种简单的方法。它适用于小物体。如果您有较大的对象,您可能希望单独存储它们。您还可以序列化到 JSON 或从 JSON 序列化,以便您的存储数据可读。


推荐阅读