Would it be possible to check the filenames if they are supported on other platforms and emit a warning? It would be nice to have a warning on the machine i created the possibly “unsyncable” file on without having to check it on the other end.
eg:
I created a folder with a colon character in its name on Linux. Everything seems to work but my Windows PC seems to be stuck syncing the changes. An (optional) warning about potential untransferable files would solve this IMHO.
Invalid characters for Windows paths: \ / : * ? " < > |
Don’t see why we should do that. Also, even if we do, you can’t guarantee that the underlying filesystem supports it. For example exFAT or ntfs on linux.
Don’t forget characters 0 to 31, trailing spaces and periods, and the raft of reserved filenames. These things always end up being more complex than you expect.
Sorry to resurrect this dead post, but I thought it’d be worth mentioning a ‘workaround’ I use. Not really a true fix for the underlying issue, but ‘resolves’ the pain-point for me.
By substituting unicode characters that have the same visual appearance as a character that would be ‘invalid’ on one or more filesystems, I get the visual representation I want, without the filesystem complaining:
Illegal characters in Windows filenames, according to MSDN:
<
(less than)
U+003c
˂
(Modifier Letter Left Arrowhead)
U+02C2
>
(greater than)
U+003e
˃
(Modifier Letter Right Arrowhead)
U+02C3
:
(colon)
U+003A
꞉
(modified letter colon)
U+A789
"
(double quote)
U+0022
“
(Left Double Quotation Mark)
U+201C
”
(Right Double quotation mark)
U+201d
/
(forward slash)
U+002f
⁄
(fraction slash)
U+2044
\
(backslash)
U+005c
|
(vertical bar or pipe)
U+007c
|
Fullwidth Vertical Line
U+FF5C
?
(question mark)
U+003f
*
(asterisk)
U+002a
🞶
(Medium Six Spoked Asterisk)
U+1F7B6
While not technically an illegal character, quoting quotes correctly on Linux can be a royal pain, and the result is ugly as well.
'
(single quote)
U+0027
‘
(Left Single Quotation Mark)
U+2018
’
(Right Single Quotation Mark)
U+2019
Some of my scripts take filenames that have an underscore or period used as a separator and converts them to be space-sparated. However, words like ‘S.H.I.E.L.D." and “DD5.1” in the name get mangled, however ‘clever’ I make the heuristic. So I use substitute’one dot leader’ where the ‘period’ should survive such name processing. e.g. Marvel’s Agents of S.H.I.E.L.D.jpg becomes Marvel’s Agents of S․H․I․E․L․D.jpg
.
(period)
U+002E
․
(One Dot Leader)
U+2024
To make life a little easier, I’ve remapped a few keyboard combinations so I can type those characters with one keystroke.