(原创)Databinding踩坑:3 字节的 UTF-8 序列的字节 3 无效

问题产生

最近接手一个新的项目
运行后发下跑不起来。一查,是build阶段出了点问题
但是报错信息很有限,只查到这么一条提醒:
3 字节的 UTF-8 序列的字节 3 无效

问题定位

一开始我以为是自己代码问题
于是自己闷头查了好久
还去问了其他的同事
最后他们说他们可以正常运行
奇了怪了。
直到我去搜索这个问题
才突然意识到
他们用的是MAC
而我用的是Windows
这个错误,只在Windows系统上才会出现!
就离谱
所以在此记录下

问题原因

因为Databinding会在编译时根据xml在build里面生成自己的一些文件,
所以如果你在他的xml里面写了中文的话
在Windows系统就会报这个错
而且最恶心的是
他不会告诉你是具体那个xml有错
而是会在编译的日志台告诉你这个库下面所有的xml生成失败了
这也给我们修改制造了很多麻烦

问题解决

先说下我是怎么解决的:
我把这个库的所有用到了databinding的xml文件都找出来
一个个去注释掉那些用到了databinding属性的代码
然后编译一下
看是否通过
如果通过,再把注释的范围缩小
直到找到最后出问题的地方
有可能不止一出
必须全部改好才可以正常编译。
因为这个软件一开始是在MAC上面开发的,所以不存在这个问题
MAC开发的同学在xml里面写了一些中文
导致到了Windows上面就出问题了
最后,说一下开发中如何避免这个问题:
1:xml中一些属性比如text:不要直接使用中文
而是定义在String.xml里面
2:xml其他地方避免使用‰这类不属于utf-8编码的特殊符号
如果需要使用,也定义在String.xml里面
3:name取名最好不要存在 _,类似这种:

<variable name="table" type="Table_1"/> 
上一篇:cmake使用不同编译器编译C++代码


下一篇:利用CSDN将图片自动存入AI Studio :pic2bml