BOM格式造成的\uFEFF引发的悲剧

我的目的是要把汉字转换为拼音

我把要转换为拼音的字符用记事本以UTF-8的编码形式保存

输入图片说明

然后以文件的形式用java去读

输入图片说明

然后我们看看结果吧

输入图片说明

为什么??我的拼音怎么没有转换出来,而且还报错了,更可恶的还是空指针错,没道理呀,值不是传上去了吗

好吧,给我的第一个感觉就是我的字符串可能出现空格字符啥的,然后我就去去空格

     String str=strArray[0];
     str.trim();

不行没有成功,还是报错,难道是去空格的方法有问题??又换一种!

     String str=strArray[0];
     System.out.println(str.replaceAll("\\s*", ""));

这时候我有点郁闷了,怎么还是不行,我就想可能是我的编码有问题吧,再接受的时候再转一次编码吧

  String str=strArray[0].trim();
  String   newstr = new String(str.getBytes(),"UTF-8");

这会有点难受了,我就想可能是转拼音的方法写错了吧,我再试一下我的拼音方法

    public  void hbaseTest(){
      System.out.println(ToPinyin("马克"));
    }

输入图片说明

没问题呀,方法没错呀,到底错在哪儿了呢,好吧,只能用debug模式追踪一下了

输入图片说明

这会有点惊呆了,怎么多了一个逗号,\uFEFF 是啥玩意,让后就百度吧,还好,度一下就出来了,就是他妈BOM头惹得祸

然后我把我的文件用notepad++打开,以UTF-8无BOM格式编码保存

输入图片说明

再次运行吧,好使了,可怜我折腾了将近2个半点呀,头都大了

输入图片说明

转载于:https://my.oschina.net/lcyanxi/blog/1555940

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值