Windows文件名中的元数据分隔符

我正在维护将文件传输到另一个系统的应用程序,并使用结构化文件名来包含包含语言代码的元数据。 目前的应用程序使用两个字符的语言代码和短划线/连字符作为分隔符。

防爆。 加拿大-EN-PRODNAME-ProdCode.txt

我将它转换为使用IETF语言代码,所以破折号分隔符不会做,需要replace。 我试图确定一个分隔符,以避免将来的错误,并正在考虑波代〜。

防爆。 加拿大〜EN-GB〜PRODNAME〜ProdCode.txt

这将仅用于Windows Sever 2003 +系统。 我当然没有拿出这个parsing文件名来获取元数据的系统。 不幸的是,我不能把它包含在文件本身中,目标系统期望语言代码用破折号以IETF格式。

有关在文件名中使用代字号的潜在问题的任何想法,或者可能使用更好的字符? 我只是在寻找第二个意见,以防我可能会失败。 我相信windows会在缩短长文件名到8.3格式时使用波形符号,但是我不认为这是一个问题,因为操作系统可以处理lang文件名。

代字号可能很好,但是旧的下划线_有什么问题呢? 它在windows或unix上没有特别的意义,并且使得名称相对容易阅读。 如果没有其他特殊的考虑,我会避免单纯的偏执狂,因为正如你所提到的那样,Windows有时会把它用作特殊的字符。