我希望有一些好人可以帮助我从数据类型为文本的单行中读取字符和字节。
我有一个 Text.toString(),其中模式是前 2 个字符,后跟 2 个字节和剩余的字符。这是一个固定长度的文件,长度为 70。
我必须忽略这2个字节,这2个字节显示为特殊字符(有时显示为单个字符,有时显示为2个字符)。
我尝试使用 UTF-8、iso-8859-1、CP850、US-ASCII 等,如下
byte[] utf8bytes = value.toString().getBytes("iso-8859-1");
LOG.info(new String(utf8bytes, Charset.forName("UTF-8")));
输入数据:
12��00a1A10a0000000abcdef0ghijkl0abcde000000f0gh1a0bcded1234z1234 z000000000000002
12ɹ00a1A10a0000000abcdef0ghijkl0abcde000000f0gh1a0bcded1234z1234 z000000000000002
输出应该是: 1200a1A10a0000000abcdef0ghijkl0abcde000000f0gh1a0bcded1234z1234 z000000000000002 1200a1A10a0000000abcdef0ghijkl0abcde000000f0gh1a0bcded1234z1234 z000000000000002
该脚本位于 Hadoop Mapper 中。 任何帮助都会很棒,因为我一直在努力完成这项工作。
谢谢你, 雷瓦西。
请您参考如下方法:
如果您确定String
中的所有其他字符都是字母数字,则可以使用replaceAll
删除它们。请注意,我在其中留了空格,因为看起来您的预期输出想要保留该空格。
str = str.replaceAll("[^A-Za-z0-9 ]", "");