我是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'
,那么它就转换成由字节字符串组成的type 'byte'
。type 'byte'
只有decode()
功能。
另外,我希望在Python3
中获得与示例代码中ms949Str
的结果值相同的字符串值。请给我一些建议。谢谢。在
我不知道Python,而且你没有说你使用的是什么Python方法,但是如果Python方法将Python字符串转换成
UTF-8
字节序列,那么你在这里使用了错误的转换方法,因为这与URL编码无关。在str.getBytes("UTF-8")
将返回一个byte[]
,Java字符串编码在UTF-8
中。在new String(bytes, "UTF-8")
将对字节数组进行解码。在URL编码是将文本转换成一个字符串,该字符串作为完整URL的组件有效,这意味着所有特殊字符都必须使用
%NN
转义符进行编码。非ASCII字符也必须编码。在以字符串
Test & gehört
为例。当URL编码时,它将变成以下字符串:当与
^{pr2}$getBytes
一起使用时,字符串Test & gehört
将成为以下字节序列(以十六进制显示):相关问题 更多 >
编程相关推荐