2014-12-03 3 views
0

я использую MIME :: Base64 для кодирования некоторых строк, чтобы безопасно проходить над URL Но есть время, когда код ломается из-за широкие символамиMIME base64 кодирование широких символов

Как я могу безопасно кодировать широкие символы, я нет необходимости использовать MIME :: Base64, любая легкая кодировка будет работать для меня

use MIME::Base64; 
print MIME::Base64::encode_base64("\x{2019}s text"); 
print "\nBye\n"; 

ответ

2

Как вы можете видеть в documentation, encode_base64 принимает байт в качестве аргумента. Чтобы получить байты из строки, кодировать его:

use Encode; 

print MIME::Base64::encode_base64(encode('utf-8', "\x{2019}s text")); 

Не забудьте decode обратно на приемной стороне!

+1

Вспоминая, что принимающий код также должен * декодировать * байтовую строку после того, как он декодировал данные Base 64. – Borodin

+0

@Borodin: Я забыл упомянуть об этом, обновленный сейчас. Спасибо за напоминание. – choroba

+0

Но это будет означать двойной код каждый раз, даже если нет широкого символа – Ram

Смежные вопросы