在Java

时间:2018-09-19 21:59:09

标签: java encoding uuid

我试图缩短要嵌入URL中的UUID值(以UUID而非字符串形式存储在数据库中)。我知道URL的Base64,但尝试查看是否可以使用破折号和下划线字符。 所以我想将UU​​ID转换为base62。经过大量的搜寻后,我发现:

  1. 这没有标准(例如RFC2045),对吗?

  2. 最重要的是,它没有适当的实现。我发现了很多有关如何执行此操作的摘录,但有一些注释说明“这是一个幼稚的实现”或其他内容。是否有适当的实现方式(我不介意确切的解释,只要正确完成映射就应如何完成)?

  3. Apache Commons Codec和Guava中有一些基类可以针对Base32和Base64进行扩展,但是我发现对Base62进行扩展并不容易。甚至有可能做到这一点(考虑到映射根本不同的事实)?
    谢谢。

1 个答案:

答案 0 :(得分:3)

您可能想尝试以下库:https://github.com/Devskiller/friendly-id

  

FriendlyID库将给定的UUID(具有36个字符)转换为基于Base62(最多22个字符)的URL友好ID(“ FriendlyID”),如下例所示:

   UUID                                        Friendly ID

   c3587ec5-0976-497f-8374-61e0c2ea3da5   ->   5wbwf6yUxVBcr48AMbz9cb
   |                                           |                              
   36 characters                               22 characters or less
     

此外,该库允许:

     
      
  • 从FriendlyID转换回原始UUID;和
  •   
  • 创建一个新的随机FriendlyID
  •