我正在读取一个文件中的数据,作为一串字节流。我刚刚遇到了一些Unicode字符串,不确定如何最好地处理它们。
每个字符都使用两个字节,只有第一个似乎包含实际数据,例如字符串“trust”存储在文件中的方式是:
通常我会使用正则表达式将零替换为空,从而移除空格。但是,文件中单词之间的空格是使用
我尝试过调整字符串编码集,例如“ISO-8859-1”和“UTF-8/16”,但每次最终都会留下空格。
我创建了一个简单的正则表达式来移除双零十六进制值,即:
但是这显然只适用于双零,我真的想用空格替换单个零,并用实际的ASCII/Unicode空格字符替换双零。
我记得Java字符串格式设置中有一种处理这种情况的方法,但我可能错了。那么我应该创建一个正则表达式来去除零,还是Java实际上提供了进行此操作的机制?
谢谢
每个字符都使用两个字节,只有第一个似乎包含实际数据,例如字符串“trust”存储在文件中的方式是:
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实际上提供了进行此操作的机制?
谢谢