我只是从一个文件的字节流中读取一些数据的过程中,我只是遇到了一些的Unicode字符串,我不知道如何以最佳方式处理。
每个字符使用两个字节,仅在第一个表面上的,以包含实际数据,因此,例如字符串“信任”被存储在文件中:
0x74 0x00(t) 0x72 0x00(r) ...and so on
一般情况下我只是使用正则表达式来替换没有零点,因此删除空白。 但是,该文件中的单词之间的空格实现使0x00 0x00
,所以试图做一个简单的字符串“的replaceAll”是种它搞乱了一点。
我已经试过用字符串编码集玩耍,如“ISO-8859-1”和“UTF-8/16”,但每次我结束了空白。
我没有创建一个简单的正则表达式来去除双零个十六进制值,这就是:
new String(bytes).replaceAll("[\\00]{2,},"");
但是,这显然只适用于双零,我很想有一个实际的ASCII / Unicode空格字符来代替单一的零一无所有,和双零。
我可以发誓的处理这种事情的Java字符串格式设置一个,但我可能是错的。 所以我应该创造一个正则表达式来剥离出零工作,或不实际的Java做这件事的提供机制?
谢谢