这个什么问题,命名都是 商品
为什么后面是false
static void printUTF8Bytes(String s) {
try {
byte[] b = s.getBytes("utf-8");
for(byte c : b) {
System.out.print(Integer.toHexString(c&0xff));
}
System.out.println();
} catch (java.io.UnsupportedEncodingException e) {
e.printStackTrace();
}
}
用这个printUTF8Bytes
方法把hd和title的UTF-8编码输出来看一下。
我以前遇到过一次,我把一个txt文件的内容读出来去代码里比较,本来很简单的,但是最后里面所有行的内容都匹配上了。。。除了第一行。。。最后debug看。。。结果第一行的开头被莫名塞了一个\uFEFF
文件里的内容
代码里读出来,看来很正常
但其实。。。打开第一行的字符串的char
数组,被塞了一个元素\uFEFF
所以一直匹配不起,我试了,就算我第一行给个换行,也要硬赛个\uFEFF
debug看
所以最后为了达到目的,我把首行舍弃,读取时从第二行开始,首行空格或者随便写啥都行,解决了当时的问题
后面百度了哈,貌似是windows自带的记事本编辑工具在保存UTF-8的文件时,会在每个文件开头添加0xefbbbf(十六进制)的字符(描述具体查看javaweb项目部署到tomcat下,修改配置文件问题总结)
thx,仅供参考
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
你的两个字符串其实分别是下面的a b数组,因为控制台都是utf-8编码输出的,所以看起来是一样的