如何在CAPL中使用不同的编码

汽车安全 2年前 (2021) admin
802 0 0

最近修改一个CAPL脚本,编译时遇到了一个问题,出现大量的warning,如下图所示

如何在CAPL中使用不同的编码

这句话翻译过来

函数无法处理不同的字符串编码,如果使用非ASCII字符,请以本地编码保存源文件

虽然capl文件编译时出现的警告,并不会影响脚本的执行,但是对于我这种喜欢扣细节的人来说,无法忍受,所以我就想一探究竟

首先试着理解这句警告标语,发现没有头绪

好了,放弃吧—–不可能的

接着看一下脚本中到底是哪些代码报警了

如何在CAPL中使用不同的编码

发现都是EthGetMacAddressAsNumber和ipGetAddressAsNumber这两个函数造成的

然后我就在Helper文档中查了下它们的用法

如何在CAPL中使用不同的编码
EthGetMacAddressAsNumber
如何在CAPL中使用不同的编码
ipGetAddressAsNumber

它们只是简单地传入MAC地址的字符串类型和IP地址的字符串类型,脚本中也确实传入了正确的参数,所以这两条函数的使用并无问题

我就更加一头雾水了

为此我专门给Vector的人发了邮件,询问这个问题,当然他们也积极地响应了我(设备这么贵,能不积极么)

如何在CAPL中使用不同的编码

大致的意思是说:

在你新建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文件首行

如何在CAPL中使用不同的编码

这说明这个can文件之前是在英文系统上创建的

我又看了下我现在的电脑,发现是中文系统,现在你应该知道问题出在了哪里

那要如何修改,才能消除这些警告呢,Vector的回复也提供了三种方式

  • 首先,可以把can文件在其他编辑器中打开,比如说notepad,打开后把encoding方式改成符合本地电脑设置的encoding方式,然后保存,再用CAPL Browser打开,然后修改encoding值(直接在CAPL Browser里修改无效)

试了后发现并没有什么用,所以又提供了另一种方式

  • 在本地电脑上新建一个.can脚本,然后把所有代码拷贝到这个脚本上,保存

发现是有用的

  • 如果还是存在问题,就用最后一个方法,改电脑设置,下图这样
如何在CAPL中使用不同的编码

这个方法还是不要尝试了,你会发现电脑上很多文字出现乱码了

当然vector还提供了这个问题的官方链接

How to Work with Different Encodings in CAPL


如何在CAPL中使用不同的编码如何在CAPL中使用不同的编码如何在CAPL中使用不同的编码如何在CAPL中使用不同的编码

原文始发于微信公众号(汽车网络诊断通信):如何在CAPL中使用不同的编码

版权声明:admin 发表于 2021年11月18日 上午11:41。
转载请注明:如何在CAPL中使用不同的编码 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...