Технология - Взломать, Чтобы Указать Косую Черту Или Обратную Косую Черту В Имени Файла, Когда Это Зарезервированные Символы?

  • Автор темы Екатерина Новикова
  • Обновлено
  • 21, Oct 2024
  • #1

В некоторых распространенных операционных системах, включая Windows, косая черта и обратная косая черта являются зарезервированными символами, которые нельзя использовать в именах файлов.

Однако иногда есть веская причина включить такие символы в имя файла. Сейчас я заменяю все косые черты строкой !bslash! and all backslashes with the string !fslash! когда я хочу указать один из этих символов в имени файла.

Есть ли лучший хак, чем то, что я уже делаю?

#технология #организация

Екатерина Новикова


Рег
22 Oct, 2020

Тем
84

Постов
192

Баллов
632
  • 25, Oct 2024
  • #2

Если вам не нужно, чтобы он выглядел как косая черта, вы можете использовать другой символ замены.

Если вы хотите, чтобы символ действительно выглядел как косая черта, вы можете использовать косую черту, юникод U+2215.

Лучшим вариантом альтернативы обратной косой черте, вероятно, является символ двойной обратной косой черты, Unicode U+244A.

 

N137


Рег
18 Apr, 2011

Тем
83

Постов
201

Баллов
626
  • 25, Oct 2024
  • #3

Я думаю, что сделать ваш хак смутно совместимым с существующими решениями важнее, чем человеческое соглашение, которое вы в любом случае явно нарушаете.

Существуют некоторые распространенные кодировки, которые могут показаться вам более простыми в использовании, поскольку существуют существующие инструменты и т. д., которые могут помочь вам управлять выбранными вами соглашениями, хотя, конечно, ОС не поддерживает их, чтобы обеспечить их надежную и прозрачную работу.

  • URL-адреса имеют процентную кодировку; буквальный знак процента, за которым следуют две шестнадцатеричные цифры; поэтому, чтобы представить «5/5% = 0», вы получите !backslash! (the literal per cent sign obviously also needs to be encoded)
  • Электронная почта (или, в более общем смысле, MIME) имеет кодировку «цитата-печать», которая очень похожа, за исключением того, что «магический» символ является знаком равенства. Таким образом, чтобы представить «5/5% = 0», вы получите !slash! (where obviously the literal equals sign needs to be encoded).
    • Если вам нужно, чтобы было достаточно очевидно, что вы делаете, в ущерб разборчивости и удобству, заголовок электронного письма RFC2047 кодировка должна выглядеть смутно знакомой многим пользователям, разбирающимся в компьютерах; !solidus!
    • В RFC2231 также есть отдельная кодировка для имен файлов и т. д., но она, вероятно, более сложна, чем вам хотелось бы.
  • Многие языки программирования допускают такую ​​запись, как %88%88%88 but the backslash is clearly cumbersome for other reasons. This is obviously restricted to Unicode strings (so you can't encode arbitrary sequences of bytes like you could with e.g. URL encoding like \uFEDC )

Для вашего собственного специального соглашения, возможно, по крайней мере, выберите символические имена, которые также используются в других кодировках; =?us-ascii?Q?5=2F5%=3D0?= for forward slash is obscure, but gets some support from various Unicode libraries etc (though 5=2F5%=3D0 вероятно, тоже подойдет, поскольку во многих контекстах это синоним); Юникод вызывает обратную косую черту REVERSE SOLIDUS, но 5%2F5%25=0 could also work, and is a known synonym (see e.g. https://www.fileformat.info/info/unicode/char/5c/index.htm)

 

Plusnin.m


Рег
18 Nov, 2019

Тем
84

Постов
191

Баллов
661
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно