在MAC 上使用databinding工具开发的Android项目,换到windows 环境就出现这种报错信息com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 3 字节的 UTF-8 序列的字节 3 无效。。。。。。。
出错原因为读取UTF-8格式失败。
主要原因是开发人员编码不规范导致的,在xml文件中databinding的地方直接使用了中文字符(汉字或者汉字符号都有可能)所以无论在哪里都强调编码规范性,真的是:编码不规范,同事两行泪,下面就简单说下解决方案:
解决方法:
方案1:老老实实的把xml文件的中文改掉:xml布局中间的,使用databinding的部分使用了硬编码的中文,比如android:text=“@{“占位符”},android:text=“@{“xxx,default=`占位符`”}
改成@string/xx引用的方式即可
评价:(但是这种需要改动的东西太多,一不留神就会错过中文的空格之类的东东,这样改动起来很难)
方案2:由于出现这种问题是java编码的问题,所以这里我们可以从根源上进行一下设置:在系统环境变量中增加一个变量,变量名为: JAVA_TOOL_OPTIONS, 变量值为:-Dfile.encoding=UTF8,保存,重启电脑使之生效。
评价:(确实是从根源上解决问题啦,但是代码的不规范问题还是在保留着)
所以论开发代码的规范的重要性。如果对你的开发有帮助请给个赞,谢谢。