POSIXly:
od -An -vtu1 < file > file.encoded
Где каждый и v
каждый байт файла кодируется как u
десятичное число без знака с n
или A
адресом.
Для декодирования с некоторыми awk
реализациями (такими, как gawk
или mawk
, где printf("%c", 0)
работает):
awk '{for (i = 1; i <= NF; i++) printf "%c", $i}' < file.encoded > file
Несколько замечаний о том, почему ваш подход не работает:
zsh
, не могут хранить произвольные данные (, особенно байт NUL )в своей переменной. zsh
${var:offset:length}
ksh93
(ksh93
, bash
, zsh
, mksh
), offset
и length
выражаются в количестве символов, а не в байтах (UTF -8 однако является единственной многобайтовой -кодировкой символов, поддерживаемой mksh
и только при включенной опции utf8-mode
). printf %d \'x
возвращает номер кода символа.Это только значение байта в однобайтовых наборах символов -. Здесь вы, вероятно, используете bash
и находитесь в локали, использующей кодировку UTF -8, посколькуbash
printf
дает случайные значения для байтов, не являющихся частью допустимых символов там . LINE_MAX
(, см.getconf LINE_MAX
)и разделяются символом новой строки. Таким образом, за исключением очень маленьких файлов jpg, ваш sai.out
в конечном итоге не будет действительным текстом, и у вас не будет никакой гарантии, что он будет нормально обработан текстовыми утилитами.(od
здесь выводит только несколько чисел в строке ). https://serverfault.com/questions/78125/mod-rewrite-request-filename-doesnt-contain-absolute-path
REQUEST_FILENAME
кажется, возвращает другое значение, В ЗАВИСИМОСТИ ОТ ЕГО ИЛИ НЕТ В ApaChe ConFig ORRRR an .htaccess
...