如何支持本机64中的特殊字符?
import base from 'react-native-base64'
....
base.encode(str)
....
str将是、asd、Ğ、或来自某些语言的任何其他特殊字符。
我用过这个包https://www.npmjs.com/package/react-native-base64
当前,它在解码时将字符串转换为asd。
下面是示例代码
import React from "react";
import { View, Text } from "react-native";
import base from "react-native-base64";
const Decode = () => {
const string = "asdĞ";
const encode = base.encode(string);
const decode = base.decode(encode);
return (
<View>
<Text>{"String = " + string}</Text>
<Text>{"DecodeS = " + decode}</Text>
</View>
);
};
export default Decode;
你可以在https://codesandbox.io/s/aged-currying-te3ki4?file=/src/Decode.js上试试
发布于 2022-10-29 11:14:48
这可以通过在将encodeURIComponent
编码成Base64之前使用decodeURIComponent
来解决,在从Base64解码后使用对应的decodeURIComponent
来解决。
encodeURIComponent()函数通过将特定字符的每个实例替换为一个、两个、三个或四个转义序列来编码URI,这些转义序列表示字符的UTF-8编码(对于由两个“代理”字符组成的字符,只能是四个转义序列)。
这个解决方案是这里提出的,我通过阅读这个答案发现页面(这个答案没有直接回答上面的问题,其中的建议解决方案对我不起作用)。建议阅读整个链接页以了解问题和可能的解决方案。
import React from "react";
import { View, Text } from "react-native";
import base from "react-native-base64";
function b64EncodeUnicode(str) {
return base.encode(encodeURIComponent(str));
}
function UnicodeDecodeB64(str) {
return decodeURIComponent(base.decode(str));
}
const Decode = () => {
const string = "asdĞ";
//const encode = base.encode(string);
const encode = b64EncodeUnicode(string);
const decode = UnicodeDecodeB64(encode);
return (
<View>
<Text>{"String = " + string}</Text>
<Text>{"DecodeS = " + decode}</Text>
</View>
);
};
export default Decode;
输出是
解码示例 String = asdĞ DecodeS = asdĞ
在上面的代码中,您还可以使用标准的atob
/btoa
,而不是base.decode
/base.encode
https://stackoverflow.com/questions/74243509
复制相似问题