Почему балерина не обеспечивает кодирование и декодирование base64, а обеспечивает только кодирование и декодирование base64URL

Я заметил, что пакет кодирования балерины не имеет метода для encodeBase64/decodeBase64, а имеет encodeBase64URL/decodeBase64URL.

когда я использую это и работаю с другими библиотеками кодирования base64, результаты не совпадают


person Mayuran    schedule 22.01.2020    source источник


Ответы (1)


Кодировка base64 [1] и кодировка URL-адреса base64 [2] отличаются. Ballerina предоставляет API кодирования/декодирования base64 из самого языка. Вы можете использовать модуль ballerina/encoding для кодирования/декодирования URL-адресов base64.

import ballerina/io;

public function main() {
    string input = "Hello Ballerina!";
    byte[] inputArr = input.toBytes();
    string encodedString = inputArr.toBase64();
    io:println(encodedString);
}

Пожалуйста, обратитесь к Crypto BBE [3] для получения дополнительных примеров.

[1] https://tools.ietf.org/html/rfc4648#section-4

[2] https://tools.ietf.org/html/rfc4648#section-5

[3] https://ballerina.io/v1-1/learn/by-example/crypto.html


[ОБНОВЛЕНИЕ] Пример кодирования/декодирования base64.

import ballerina/io;
import ballerina/lang.'array as arr;
import ballerina/lang.'string as str;

public function main() returns error? {
    string input = "Hello Ballerina!";
    byte[] inputArr = input.toBytes();
    string encodedString = inputArr.toBase64();
    io:println(encodedString);

    byte[] decoded = check arr:fromBase64(encodedString);
    string decodedString = check str:fromBytes(decoded);
    io:println(decodedString);
}
person ldclakmal    schedule 22.01.2020
comment
@idclakmal, Спасибо, а язык также обеспечивает декодирование из base64? Мне не удалось найти какой-либо метод для декодирования строки, закодированной в base64, в массив байтов. - person Mayuran; 23.01.2020
comment
@Mayuran, да. Пожалуйста, обратитесь к обновленному примеру ответа. - person ldclakmal; 23.01.2020
comment
@idclakmal, большое спасибо, я просмотрел все API (строка, кодировка), но не проверил массив :( - person Mayuran; 23.01.2020