【问题标题】:Looking for a character that is allowed in Filenames but not allowed in email addresses... Any clue?寻找文件名中允许但电子邮件地址中不允许的字符...任何线索?
【发布时间】:2017-06-13 07:10:43
【问题描述】:

我正在尝试创建多个与电子邮件地址关联的 html 文件。但由于“@”不能在文件名中使用,并且为了避免混淆,我尝试将其替换为电子邮件地址中通常不存在的字符。

有什么想法吗?

谢谢!

【问题讨论】:

  • 您也可以使用 %64 之类的编码方案

标签: email special-characters filenames email-validation email-address


【解决方案1】:

电子邮件地址中不允许使用逗号和分号,但大多数文件系统的文件名中都不允许使用逗号和分号。

【讨论】:

  • 好主意!但仍然不完美:/ en.wikipedia.org/wiki/Email_address#Local_part
  • 我明白了,但是你遇到了双引号的问题。我会按照对您问题的评论中的建议进行编码。使用 url 编码,应该是大多数文件系统的有效文件名,并且易于反转,只需 url 解码即可。
  • 是的,我知道我可能应该这样做,但这对于我的目的来说太复杂了!谢谢!
【解决方案2】:

我相信 '~' 用于此目的。

【讨论】:

  • 好主意!但仍然不完美:/ en.wikipedia.org/wiki/Email_address#Local_part
  • 我不禁想知道为什么您需要创建 html 文件。听起来动态页面可以解决问题。虽然我不知道上下文,所以我可能是错的。
  • 哎呀...我写了“html”文件,我的意思是“jpg”文件。但是是的,我想我会使用 ~,因为没有完美的字符,我只是在寻找一种快速简单的方法来将这些文件与电子邮件地址相关联。谢谢!
【解决方案3】:

根据这里的链接,只要特殊字符不在开头或结尾,几乎所有 ASCII 字符都可以在电子邮件地址中使用。

What characters are allowed in an email address?

【讨论】:

【解决方案4】:

任何一个,(逗号); (分号)(尖括号)[](方括号)或“(双引号)应该适用于大多数情况。

由于带引号的字符串中允许使用这些字符,因此您可以将“@”替换为无效的序列,例如连续三个双引号。

根据the RFC

在带引号的字符串中,除了双引号和反斜杠本身之外,任何 ASCII 图形或空格都可以不加黑斜线引用。

你可以有一个电子邮件 abc."~~~".def@rst.xyz。但是你不能有 abc.""".def@rst.xyz;它必须是 abc.""".def@rst.xyz。因此,您可以安全地使用 """ 代替文件名中的 @。

但是,RFC 也说

虽然上面对 Local-part 的定义相对宽松, 为获得最大的互操作性,需要接收邮件的主机 应该避免定义本地部分需要的邮箱(或 使用)带引号的字符串形式或本地部分是大小写的地方- 敏感。

应该意思是“……那个 在特定情况下可能存在正当理由 特定的行为是可以接受的,甚至是有用的,但完整的 应了解影响并仔细权衡案件 在实施之前……”RFC2119

所以,虽然“””会起作用,但您会看到带有引号的电子邮件是否值得为它设计的麻烦?如果不是,那么使用单个字符之一。

【讨论】:

  • 好主意!但仍然不完美:/ en.wikipedia.org/wiki/Email_address#Local_part
  • 最初的问题是“通常不会存在”。并且维基百科链接指出“尽管技术上有效的各种特殊字符;组织、邮件服务、邮件服务器和邮件客户端在实践中通常不接受所有这些”
  • 好的,那你觉得哪个角色最好看?我打算用“~”。还有更好的角色吗?
  • 评论太长,所以添加到答案中。
  • 好的!你肯定有最好的答案! :D
猜你喜欢
  • 1970-01-01
  • 2019-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-24
相关资源
最近更新 更多