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