将NSData(以plist格式)转换为Java String

时间:2011-01-02 02:20:40

标签: java cocoa string encoding nsdata

嘿伙计们,我有一个Cocoa应用程序,通过网络将NSDictionary发送到各种设备。以前,它只发送到其他Mac,所以使用NSKeyedArchiver写入NSData对象工作正常,另一方面我会使用NSKeyedUnarchiver。

我现在正在为Windows支持编写Java实现,我需要转换plist数据,这些数据来自网络,如:

< 3c3f786d 6c207665 7273696f ... >

到一个简单的Java String。 (这样我就可以用XML解析器来阅读它。)相反似乎在这里得到了回答:[https://stackoverflow.com/questions/3774872]但我仍然无法完全理解我应该执行编码/解码的顺序。 1

1 个答案:

答案 0 :(得分:2)

您通过网络看到的“字符串”实际上是原始文件中显示的XML文件。

如果您将其视为byte[]数组对象,则可以将其传递给java.lang.String构造函数:

byte[] theBytes = ...;
String theString = new String(theBytes, "UTF-8");

从那里到XML解析器。

如果通过网络传输的实际字节数为'<'' ''3''c'等,那么在发送数据的那一方面有些不可思议,因为它似乎是在发送之前通过数据的NSString方法将数据转换为-descriptionNSKeyedUnarchiver不足以处理这样的字符串,所以我不怀疑是这种情况,但如果是这样的话,将它转换回原始字节流然后使用上面的内容就非常简单了用于获取XML字符串的Java构造函数。