【发布时间】:2017-11-22 09:45:25
【问题描述】:
我希望有好心人可以帮助我从数据类型为文本的单行中读取字符和字节。
我有一个 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 中。 任何帮助都会很棒,因为我一直在努力完成这项工作。
谢谢, 回复。
【问题讨论】:
-
您可以使用
substring并删除您不需要的元素位置,如果它们始终在同一个位置。 -
@rbheemana, 2 字节是大型机二进制数据。您是否有任何参考来转换/跳过这 2 个字节。