gpt4 book ai didi

java - 怎么可能对字符串进行两次编码?

转载 作者:行者123 更新时间:2023-12-02 03:58:20 24 4
gpt4 key购买 nike

我曾经是Python程序员(当然我现在也是),所以我熟悉Python编码和解码。

令我惊讶的是 Java 可以连续两次对字符串变量进行编码。

这是示例代码:

import java.net.URLEncoder;

public class OpenAPITest {
public static void main(String[] arg) throws Exception {
String str = "안녕"; // Korean
String utfStr = URLEncoder.encode(str, "UTF-8");
System.out.println(utfStr);
String ms949Str = URLEncoder.encode(utfStr, "MS949");
System.out.println(ms949Str);
}
}

我想知道它如何对字符串进行两次编码。

在 Python 3.x 版本中,一旦对由 unicode 字符串组成的 type 'str' 进行编码,就会转换为由 byte 组成的 type 'byte'字符串。 type 'byte' 只有 decode() 函数。

此外,我希望在 Python3 中获得与示例代码中 ms949Str 的结果值相同的字符串值。请给我一些建议。谢谢。

最佳答案

不了解Python,而且你也没有说你正在使用什么Python方法,但是如果Python方法将Python字符串转换为UTF-8字节序列,那么你此处使用了错误的转换方法,因为这与 URL 编码无关。

str.getBytes("UTF-8") 将返回一个 byte[],其中包含以 UTF-8 编码的 Java 字符串。

new String(bytes, "UTF-8") 将解码字节数组。

<小时/>

URL 编码是将文本转换为作为完整 URL 的有效组成部分的字符串,这意味着所有特殊字符都必须使用 %NN 转义符进行编码。非 ASCII 字符也必须进行编码。

以字符串 Test & gehört 为例。 URL 编码后,它变成以下字符串:

Test+%26+geh%C3%B6rt

当与 getBytes 一起使用时,字符串 Test & gehört 变为以下字节序列(以十六进制显示):

54 65 73 74 20 26 20 67 65 68 c3 b6 72 74

关于java - 怎么可能对字符串进行两次编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35194453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com