我正在尝试使用
中的base-64库https://github.com/mathiasbynens/base64
当我运行测试来验证代码时,我得不到正确的结果。有没有其他我可以使用的图书馆?
这是我运行的代码和我得到的结果
import utf8 from 'utf8'
import base64 from 'base-64'
var text = 'foo © bar baz';
var bytes = utf8.encode(text);
var encoded = base64.encode(bytes);
console.log(encoded);
// → 'Zm9vIMKpIGJhciDwnYyGIGJheg=='
以下是我得到的结果
W29iamVjdCBBcnJheUJ1ZmZlcl0 =
有人可以帮忙吗
提前致谢
答案 0 :(得分:7)
React Native有binaryToBase64 util接受ArrayBuffer进行base64转换:
var utf8 = require('utf8');
var binaryToBase64 = require('binaryToBase64');
var text = 'foo © bar baz';
var bytes = utf8.encode(text);
var encoded = binaryToBase64(bytes);
console.log(encoded);
// Zm9vIMKpIGJhciDwnYyGIGJheg==
您可能需要安装utf8
软件包,因为版本0.54为removed from React Native:
npm install --save utf8
答案 1 :(得分:1)
看看这个包。
这个小型图书馆有2个函数,编码和解码器,都接受字符串。
这可以很好地替代浏览器上的btoa和atob。
https://www.npmjs.com/package/react-native-base64
答案 2 :(得分:1)
您不需要任何额外的库。只需使用:
let encryptedCredentials = new Buffer(username + ":" + password).toString("base64");
答案 3 :(得分:1)
我认为不需要使用任何第三方软件包。 在React-Native中仅次于一个
print(){
let w=window.open("www.url.com/pdf");
w.print();
w.close();
}
答案 4 :(得分:0)
您可以使用rn-fetch-blob以本机代码进行转换:
import { fs } from 'rn-fetch-blob';
export const blobToBase64 = async (data, encoding = 'base64') => fs.readFile(data, encoding);
答案 5 :(得分:0)
当我尝试使用Buffer
时,我得到了一个错误,表明它已被弃用。我是这样做的:
const TOKEN = btoa(clientId + ':' + secret);
答案 6 :(得分:0)
可接受的答案和Buffer方法都不适合我。以下是 2019年1月的工作方式:
yarn add react-native-base64
然后
import base64 from 'react-native-base64'
base64.encode('Some string to encode to base64');
答案 7 :(得分:0)
(比上面的rn库更广泛地使用-并且支持utf8字符)
在我们的本机应用程序上进行base64编码/解码。我不明白为什么这必须是本机特定的,它只是javascript,并且可以工作。
npm install base-64 utf8;
然后是我的代码:
import base64 from 'base-64';
import utf8 from 'utf8';
const SALT = 'anyString';
const PREPENDING_STR = '__enc__';
function encodeCredential(input) {
if (input // if the input exists
&& typeof input === 'string' // and it's a string
) {
const newInput = `${input}${SALT}`; // add salt to the input
const utf8Bytes = utf8.encode(newInput); // utf8 encode it
const encoded = base64.encode(utf8Bytes); // base64 encode it
return `${PREPENDING_STR}${encoded}`; // add a prepending string
}
return input;
}
function decodeCredential(input) {
if (input // if the input exists
&& typeof input === 'string' // and it's a string
&& input.startsWith(PREPENDING_STR) === true // and it's encoded yet
) {
const newInput = input.replace(PREPENDING_STR, ''); // remove the prepending string
const utf8Bytes = base64.decode(newInput); // base64 decode it
const output = utf8.decode(utf8Bytes); // utf8 decode it
return output.replace(SALT, '');
}
return input;
}
答案 8 :(得分:0)
encodeBase64 = (input) => {
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
let str = input;
let output = '';
for (let block = 0, charCode, i = 0, map = chars;
str.charAt(i | 0) || (map = '=', i % 1);
output += map.charAt(63 & block >> 8 - i % 1 * 8)) {
charCode = str.charCodeAt(i += 3/4);
if (charCode > 0xFF) {
console.log("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.");
}
block = block << 8 | charCode;
}
return output;
}
答案 9 :(得分:0)
JavaScript中有两个函数分别用于解码和编码base64字符串:
atob()
btoa()