Elija sus reemplazos. Considere algunas otras variantes: base64 Variant table from Wikipedia.
Mientras codificador base64/decodificadores están trivial, posibilidad de sustitución de reemplazo se puede hacer de un simple paso de procesamiento pre/post de un funciones base64 codificación/decodificación (dentro de envolturas) existente - no hay necesidad de reinventar la rueda (completamente). O, mejor aún, como señala el Sr. Skeet, encuentre una biblioteca existente con suficiente flexibilidad.
Si no tiene caracteres alternativos adecuados "divertidos" para elegir (tal vez todos los demás caracteres no son válidos dejando sólo los 62 caracteres alfanuméricos para elegir), que siempre puede utilizar un carácter de escape de una muy ligera (~ 3/64?) Aumento en el tamaño. Por ejemplo, 0 (A) se codificaría como "AA", 62 (+) se codificaría como "AB" y 63 (/) se codificaría como "AC". Esto también podría hacerse como un paso previo/posterior si no desea escribir su propio codificador/decodificador desde cero. La desventaja de este enfoque es que la relación entre los caracteres de salida y los bytes de entrada no es fija.
En realidad, eso no es un problema con base64, es un problema con su aplicación. – JeremyP
Me gusta @JeremyP dijo. Si su aplicación no puede tolerar '+' '/' y '=', entonces debería estar muy, muy preocupado. – lenswipe