今天遇到一个字符串 length出来的长度不对的问题

代码是这样的


public static void main(String[] args) {
		HashMap<String, String> cityMap = new HashMap<String, String>();
		cityMap.put("北京", "101010100");
		String codeid = cityMap.get("北京");
		System.out.println(codeid.length());
		System.out.println(codeid);
		System.out.println(Arrays.toString(codeid.getBytes()));
	}



我的运行结果

10
101010100
[-17, -69, -65, 49, 48, 49, 48, 49, 48, 49, 48, 48]

正确应该是

9
101010100
[49, 48, 49, 48, 49, 48, 49, 48, 48]

郁闷老半天

于是我把我的编码从UTF-8改成GB2312 发现除了中文是正常会变乱码外,连里面的数字都乱码了。

数字我也亲手重新输入过 没有问题


于是猜测是数字和引号之间有问题。


我把光标放在

"101010100"的前面然后按 → 开始按

 发现引号后面要按两次 光标才跳到下一个

问题就在这里

于是把引号和数字一起删掉后重新输入 就对了


奇怪的是 我复制上面的代码会出错,别人复制运行就是对的

呵呵


遇到这样的问题可以切换编码,然后能定位出问题的地方


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值