编码和解码字符串并不像我想象的那么容易。
原始字符串如下:
at the end of → al término de • después de
经过PHP base64编码(使用三次)后,它看起来有所不同:
VUVkSksxbFlVV2RrUjJoc1NVZFdkVnBEUW5aYWFuZDJXV28wWnpSdllWTkpSMFp6U1VoVVJIRllTblJoVnpWMlNVZFNiRWxQUzBGdmFVSnJXbGhPZDJSalQzQmplVUpyV2xSNGQxQm5QVDA9
当尝试JS window.atob()解码字符串时,结果是这样的:
at the end of â al término de ⢠después de
UTF-8字符显示不正确。我应该使用什么功能来修复这个问题?
这样做的结果是JavaScript不允许Latin1范围之外的字符执行,您可以执行以下操作:
let str = 'at the end of → at the end of • after';
btoa(unescape(encodeURIComponent(str)))
// output: YXQgdGhlIGVuZCBvZiDihpIgYXQgdGhlIGVuZCBvZiDigKIgYWZ0ZXI=
这段代码将(从javascript)字符串正确地转换为base64,并且从PHP中你可以很好地解码它,现在的问题是javascript将无法解码它,因为它将其解释为语法错误(尽管它已经编码),因此它也不适用于你。
尝试
let decodedString = decodeURIComponent(escape(window.atob(yourString)))
我的记事本是用Java JTextPane构建的,在写英语时工作得非常好。然而,用其他语言书写的字母,在我的孟加拉文中,显示的是空方块。我如何解决这个问题?
如果UTF-8是8位,不意味着最多只能有256个不同的字符吗? 前128个代码点与ASCII中的相同。但是它说UTF-8可以支持多达百万个字符? 这是怎么回事?
问题内容: 如何使用Android解码utf-8字符串?我尝试使用此命令,但输出与输入相同: 问题答案: 字符串不需要编码。它只是一个Unicode字符序列。 要将字符串转换为字节序列时需要进行 编码 。您选择的字符集(UTF-8,cp1255等)确定了Character-> Byte映射。请注意,字符不必转换为单个字节。在大多数字符集中,大多数Unicode字符都转换为至少两个字节。 字符串的编
问题内容: 我正在从外部服务器加载HTML。HTML标记具有UTF-8编码,并包含ľ,š,č,ť,ž等字符。当我使用file_get_contents()加载HTML时,如下所示: 它弄乱了UTF-8字符并加载了Å,¾,¤和类似的废话,而不是正确的UTF-8字符。 我该如何解决? 更新: 我尝试将HTML保存到文件中并以UTF-8编码输出。两者都不起作用,所以这意味着file_get_conten
问题内容: 因此,我有一个字符串数组,所有字符串都使用系统默认的 ANSI 编码,并从SQL数据库中提取。因此,存在256个不同的可能字符字节值(单字节编码)。 有没有一种方法可以使我工作并显示这些字符,而不必在我的所有字符串上使用并最终得到类似的东西? 还是这是JSON的标准? 问题答案: 有没有一种方法可以使json_encode()工作并显示这些字符,而不必在所有字符串上都使用utf8_en
问题内容: 我有一个准备好的声明: 在我的代码中,我尝试使用st.setString方法。 userName的值为şakça。setString方法将’şakça’更改为’?akça’。它不能识别UTF-8字符。我怎么解决这个问题? 谢谢。 问题答案: 实际上,解决这些问题的方法数量非常可观。如果您使用的是MySQL,请尝试在JDBC连接URL的末尾添加一个参数: 您还应该检查表/列字符集是否为U