最近修改一个CAPL脚本,编译时遇到了一个问题,出现大量的warning,如下图所示
这句话翻译过来
“
函数无法处理不同的字符串编码,如果使用非ASCII字符,请以本地编码保存源文件
”
虽然capl文件编译时出现的警告,并不会影响脚本的执行,但是对于我这种喜欢扣细节的人来说,无法忍受,所以我就想一探究竟
首先试着理解这句警告标语,发现没有头绪
好了,放弃吧—–不可能的
接着看一下脚本中到底是哪些代码报警了
发现都是EthGetMacAddressAsNumber和ipGetAddressAsNumber这两个函数造成的
然后我就在Helper文档中查了下它们的用法
它们只是简单地传入MAC地址的字符串类型和IP地址的字符串类型,脚本中也确实传入了正确的参数,所以这两条函数的使用并无问题
我就更加一头雾水了
为此我专门给Vector的人发了邮件,询问这个问题,当然他们也积极地响应了我(设备这么贵,能不积极么)
大致的意思是说:
“
在你新建capl文件时,首行会自动出现一行encoding的标识,就像是这样,“/*@!Encoding:1252*/”,这个标识是用来告诉打开capl脚本的这个编译器(CAPL Browser),这个capl脚本当时是以何种方式编码的
”
“
而决定编码方式的,是电脑的操作系统,比如你在英文系统上用CAPL编译器新建一个.can文件,首行显示“/*@!Encoding:1252*/”,你在中文系统上新建一个一个.can文件,首行会显示“/*@!Encoding:936*/”
”
“
其中encoding的数字就代表了电脑的encoding方式,中文设置的encoding为936,英文设置的encoding为1252
”
那有的人说,我不用CAPL Browser创建can文件,我在电脑上新建一个txt文件,把它后缀名改为.can,再用CAPL Browser打开,发现首行没有显示encoding的内容啊
如果你在编译器上点击编译或保存,是不是就出来了呢,不信可以试试
所以,问题出在哪
我先看了下can文件首行
这说明这个can文件之前是在英文系统上创建的
我又看了下我现在的电脑,发现是中文系统,现在你应该知道问题出在了哪里
那要如何修改,才能消除这些警告呢,Vector的回复也提供了三种方式
-
首先,可以把can文件在其他编辑器中打开,比如说notepad,打开后把encoding方式改成符合本地电脑设置的encoding方式,然后保存,再用CAPL Browser打开,然后修改encoding值(直接在CAPL Browser里修改无效)
试了后发现并没有什么用,所以又提供了另一种方式
-
在本地电脑上新建一个.can脚本,然后把所有代码拷贝到这个脚本上,保存
发现是有用的
-
如果还是存在问题,就用最后一个方法,改电脑设置,下图这样
这个方法还是不要尝试了,你会发现电脑上很多文字出现乱码了
当然vector还提供了这个问题的官方链接
How to Work with Different Encodings in CAPL
原文始发于微信公众号(汽车网络诊断通信):如何在CAPL中使用不同的编码