我是Python程序员(当然我现在也是),所以我熟悉Python编码和解码。
我很惊讶Java
可以连续两次编码String变量。
这是示例代码:
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'
,它就会转换为type 'byte'
,其中包含字节字符串。 type 'byte'
只有decode()
个功能。
此外,我想在Python3
中获取与我的示例代码中ms949Str
的结果值相同的字符串值。请给我一些建议。感谢。
答案 0 :(得分:2)
不知道Python,除了你没有说你正在使用什么Python方法,但如果Python方法将Python字符串转换为d.write
.format(csvFormat)
.option("header", "true")
.save(path)
字节序列,那么你使用的是错误的转换方法,因为这与网址编码无关。
UTF-8
将返回str.getBytes("UTF-8")
,其中包含byte[]
中编码的Java字符串。
UTF-8
将解码字节数组。
URL编码是指将文本转换为完整URL的组件有效的字符串,这意味着必须使用new String(bytes, "UTF-8")
转义编码所有特殊字符。非ASCII字符也必须编码。
例如,取字符串%NN
。 URL编码时,它将变为以下字符串:
Test & gehört
与Test+%26+geh%C3%B6rt
一起使用时,字符串Test & gehört
成为以下字节序列(以十六进制显示):
getBytes