0

我有这个 RandomAccessFile 对象,它从文件中读取字节并将它们存储到字节数组中。他们应该组成一个希伯来字母串。如果我在桌面上用 JAVA 调试它们,那么我得到 4 个十六进制字节,例如:

data[0]=E7
data[1]=FA
data[2]=E5
data[3]=EC

(所以,每个 1 字节长度是有意义的)

当我从它们构造一个 String str 时,我得到:

str[0]=\u05D7
str[1]=\u05EA
str[2]=\u05D5
str[3]=\u05DC

这是正确的 unicoded 希伯来字母,字符串打印出来就好了。它们每个长度是 2 个字节吗?

当我在 Android 设备上进行相同的调试时,我得到相同的“数据”字节数组,但“str”字符串是 4 个相同的字节,读出为 4 个问号。

我的问题是:java 怎么能占用 1 个字节并“知道”它是希伯来语,我怎么能在 Android 中做同样的事情?

谢谢

代码:

iDefLength=4;
RandomAccessFile R = new RandomAccessFile(file, "r");       
R.read(bDefinition, 0, iDefLength);
this.sDef = new String(bDefinition);
4

1 回答 1

0

至于您的问题:不,Java 不能占用 1 个字节并知道它是希伯来语或任何其他编码。

虽然可以通过查看文件中的许多/所有字节并通过查看字节频率来猜测编码来进行编码猜测(我相信微软用 IE 做到了这一点),但显然这不能在单个字节上工作.

于 2012-05-20T12:35:00.650 回答