Я нахожусь только в процессе чтения некоторых данных из файла как поток байтов, и я только что столкнулся с некоторыми последовательностями unicode, что я не уверен, как лучше всего обращаться.
Каждый характер использует два байта, с только первым кажущимся, чтобы содержать фактические данные, так же например, последовательность 'доверие' сохранена в файле как:
0x74 0x00(t) 0x72 0x00(r) ...and so on
Обычно я просто использовал бы regex, чтобы ничем заменить ноли и поэтому удалить пробел. Однако места между словами в файле осуществляются, используя 0x00 0x00
, таким образом пытаясь сделать, простая строка 'replaceAll' является видом питания его немного.
Я попытался играть вокруг с наборами кодирования Последовательности, такими как 'ISO-8859-1' и 'UTF-8/16', но каждый раз я заканчиваю с пробелом.
Я действительно создавал простой regex, чтобы удалить двойные нулевые шестнадцатеричные ценности, который является:
new String(bytes).replaceAll("[\\00]{2,},"");
Но это очевидно только работает на двойной ноль, и я действительно хотел бы ничем заменить единственные ноли и двойные ноли с фактический пробел ASCII/Unicode.
Я, возможно, поклялся, что одни из Явских параметров настройки формата строки имели дело с такого рода вещью, но я мог бы быть неправым. Таким образом, я должен работать над созданием regex, чтобы раздеть ноли, или Ява на самом деле обеспечивает механизмы для того, чтобы сделать его?
Спасибо