我只是在从文件中读取一些数据作为字节流的过程中,我刚刚遇到了一些我不确定如何最好地处理的 unicode 字符串。
每个字符使用两个字节,只有第一个似乎包含实际数据,因此例如字符串 'trust' 在文件中存储为:
0x74 0x00(t) 0x72 0x00(r) ...and so on
通常我只会使用正则表达式来替换零,因此删除空格。但是,文件中单词之间的空格是使用 实现的0x00 0x00
,所以尝试做一个简单的 String 'replaceAll' 有点搞砸了。
我尝试过使用字符串编码集,例如“ISO-8859-1”和“UTF-8/16”,但每次我都得到空白。
我确实创建了一个简单的正则表达式来删除双零十六进制值,即:
new String(bytes).replaceAll("[\\00]{2,},"");
但这显然只适用于双零,我真的很想用任何东西替换单零,并用实际的 ASCII/Unicode 空格字符替换双零。
我可以发誓其中一个 Java 字符串格式设置可以处理这种事情,但我可能错了。那么我应该努力创建一个正则表达式来去除零,还是Java实际上提供了这样做的机制?
谢谢