C#处理扩展ASCII码

接收到一组数据里面包含了内容为F8的数据节;一般的ASCII码最大值为7F

如果按照GB2312解析 则会出现一个奇怪的中文字符,猜测是因为中文解析方式发现某字节大于ASCII的限度7F后,就会按照双字节解析汉字,因此将F8和后一位43,组合解析成汉字,此时解析结果如下

13-Oct-2022
10:57
150
6.22pH
21.5鳦 ATC
Auto EP Standard
Blank

如果按照扩展ASCII解析,在C#下通过如下代码获得

Encoding encoding = Encoding.GetEncoding(437);

采用该方式解析出来的数据为°C,其中F8代表°,43代表C

原始数据:

31 33 2D 4F 63 74 2D 32 30 32 32 0D 0A 31 30 3A 35 37 0D 0A 31 35 30 0D 0A 36 2E 32 32 70 48 0D 0A 32 31 2E 35 F8 43 20 41 54 43 0D 0A 41 75 74 6F 20 45 50 20 53 74 61 6E 64 61 72 64 0D 0A 42 6C 61 6E 6B 0D 0A 0D 0A 0D 0A 0D 0A
13-Oct-2022
10:57
150
6.22pH
21.5°C ATC
Auto EP Standard
Blank

关于编码437,这个应该是IBM对普通ASCII码扩充之后的编码格式

https://en.wikipedia.org/wiki/Code_page_437

posted @ 2022-10-14 10:59  东方未  阅读(434)  评论(0)    收藏  举报