81,092
社区成员
发帖
与我相关
我的任务
分享
// 经常看到
byte[] bytes = string.getBytes(charset1);
String newString = new String(bytes, charset2);
// 或者直接是 String newString = new String(string.getBytes(charset1), charset2);
byte[] bytes = stringObject.getBytes(charset);
// 从数据类型上都可以看明白 String --> byte[]
// 按某一字符集编码规则, 把字符串编成二进制内容 (字符序列 到 字节序列 的转换)
String stringObject = new String(bytes, charset);
// 很明显,这是 stringObject.getBytes(charset); 的逆操作
// 相当于 JavaScript 里的 encodeURIComponent
// 把字符串作为 URI 组件进行编码
// 拼接构造 URI 时,经常使用到
URLEncoder.encode("小叮当", "utf-8");
byte[] bytes = "中国人".getBytes("UTF-8"); // 按UTF-8把 "中国人" 字编码.
System.out.println(
java.util.Arrays.toString(bytes)
);
// 输出可以看到 byte 数组的内容:[-28, -72, -83, -27, -101, -67, -28, -70, -70]
// 把每个字节的都转成 %xx 的形式
for (int i=0; i<bytes.length; i++) {
System.out.print(
"%" +
Integer.toString((bytes[i]>>>4)&0x0f, 16) +
Integer.toString(bytes[i]&0x0f, 16)
);
}
System.out.println();
// 用 URLEncoder.encode 编一次
System.out.println(
java.net.URLEncoder.encode("中国人", "UTF-8").toLowerCase()
);