Похоже, в вашем начальном примере ^ и @ это разные ASCII-символы, а не отображение единственного \x00. Поэтому предполагаю, что у вас utf16, перехваченный с консольного редактора копипастой. Чем копаться в получившемся мусоре, проще было бы добраться до исходного текста и попробовать iconv -f utf16 на нём.