2011-12-27 93 views
1

目前我正在使用DataInput/OutputStream的方式在网络上传输字符串。我正在传输的字符串需要转换为一个字节数组,才能解密。如何从DataOutputStream.writeUTF()读取时获取Java字符串的“原始”字节?

但是,由于使用DataOutputStream.writeUTF(“foobar”)编写字符串时,其字节数组包含编码的Java修改的UTF-8数据,这会填充加密过程。

如何从Java修改的UTF-8字符串中获取原始字节?

回答

0

Unicode有几个变体,其中s-with- ^可以是一个字符或两个:s plus combined- ^。 Java有一个Normalizer类来转换为一个特定的变体。 请参阅http://docs.oracle.com/javase/tutorial/i18n/text/normalizerapi.html 或立即查看API。

这要求原始字符串符合一个变体。一个不能接收字节,然后将它们解释为UTF-8,因为存在非法序列。这是为了防止在字节序列中间识别错误的字节/字符。

String normalizedString = Normalizer.normalize(s, Normalizer.Form.NFD); 
0

如果你写你的字符串作为字节[],并把它读作[]使用字节http://docs.oracle.com/javase/1.4.2/docs/api/java/io/DataOutputStream .html#write(byte [],int,int)

相关问题