首页 > 解决方案 > Telnet 错误地发送了 unicode 字符

问题描述

我试图自己弄清楚,但我不知道为什么它不能正常工作。我正在尝试通过 telnet 将字母“±”(U+0105,十六进制:c4 85)发送到我的服务器应用程序中。我使用 python 和 PHP 脚本编写了示例服务器。作为客户,我使用 PHP、.NET - 一切都很好,但是当我尝试使用 telnet 时 - 开始发生奇怪的事情。

让我向您展示 tcpdump 调试:

特点 ”!” (21)

        0x0000:  4500 0037 eb08 4000 4006 51b6 7f00 0001  E..7..@.@.Q.....
        0x0010:  7f00 0001 adfe 2710 352b 7ea4 92e6 f913  ......'.5+~.....
        0x0020:  8018 0200 fe2b 0000 0101 080a df49 0674  .....+.......I.t
        0x0030:  df43 c8b6 210d 0a                        .C..!..

Found as 210d

字符“a” (61)

22:56:53.597909 IP 127.0.0.1.44542 > 127.0.0.1.10000: Flags [P.], seq 138:141, ack 1, win 512, options [nop,nop,TS val 3746149818 ecr 3746104948], length 3
        0x0000:  4500 0037 eb0b 4000 4006 51b3 7f00 0001  E..7..@.@.Q.....
        0x0010:  7f00 0001 adfe 2710 352b 7ea7 92e6 f913  ......'.5+~.....
        0x0020:  8018 0200 fe2b 0000 0101 080a df49 b5ba  .....+.......I..
        0x0030:  df49 0674 610d 0a                        .I.ta..

Found as 610d

字符“£” (c2 a3)

23:00:24.210248 IP 127.0.0.1.44542 > 127.0.0.1.10000: Flags [P.], seq 144:148, ack 1, win 512, options [nop,nop,TS val 3746360436 ecr 3746325885], length 4
        0x0000:  4500 0038 eb1a 4000 4006 51a3 7f00 0001  E..8..@.@.Q.....
        0x0010:  7f00 0001 adfe 2710 352b 7ead 92e6 f913  ......'.5+~.....
        0x0020:  8018 0200 fe2c 0000 0101 080a df4c ec74  .....,.......L.t
        0x0030:  df4c 657d c2a3 0d0a                      .Le}....

Found as c2a3

使用 PHP/Python 脚本发送的字符 "ą" (c4 85)

23:03:24.939371 IP 127.0.0.1.44542 > 127.0.0.1.10000: Flags [P.], seq 164:168, ack 1, win 512, options [nop,nop,TS val 3746541169 ecr 3746536477], length 4
        0x0000:  4500 0038 eb29 4000 4006 5194 7f00 0001  E..8.)@.@.Q.....
        0x0010:  7f00 0001 adfe 2710 352b 7ec1 92e6 f913  ......'.5+~.....
        0x0020:  8018 0200 fe2c 0000 0101 080a df4f ae71  .....,.......O.q
        0x0030:  df4f 9c1d c485 0d0a  

23:37:09.222782 IP localhost.localdomain.37044 > localhost.localdomain.webmin: Flags [P.], seq 1:4, ack 1, win 512, options [nop,nop,TS val 1508202515 ecr 1508202514], length 3
        0x0000:  4500 0037 6be9 4000 4006 d0d5 7f00 0001  E..7k.@.@.......
        0x0010:  7f00 0001 90b4 2710 26b4 be31 4337 a85f  ......'.&..1C7._
        0x0020:  8018 0200 fe2b 0000 0101 080a 59e5 5813  .....+......Y.X.
        0x0030:  59e5 5812 c485 0a 

Found as c485 in both cases.

字符 "ą" (c4 85)使用来自 Ubuntu 16.04、20.04 和 Putty 的 telnet:

23:54:08.634176 IP localhost.localdomain.37090 > localhost.localdomain.webmin: Flags [P.], seq 11:12, ack 1, win 512, options [nop,nop,TS val 1509221923 ecr 1509216061], length 1
        0x0000:  4510 0035 5ba9 4000 4006 e107 7f00 0001  E..5[.@.@.......
        0x0010:  7f00 0001 90e2 2710 df8a 63aa f34f 178b  ......'...c..O..
        0x0020:  8018 0200 fe29 0000 0101 080a 59f4 e623  .....)......Y..#
        0x0030:  59f4 cf3d c4                             Y..=.
23:54:08.634288 IP localhost.localdomain.webmin > localhost.localdomain.37090: Flags [.], ack 12, win 512, options [nop,nop,TS val 1509221923 ecr 1509221923], length 0
        0x0000:  4500 0034 0813 4000 4006 34af 7f00 0001  E..4..@.@.4.....
        0x0010:  7f00 0001 2710 90e2 f34f 178b df8a 63ab  ....'....O....c.
        0x0020:  8010 0200 fe28 0000 0101 080a 59f4 e623  .....(......Y..#
        0x0030:  59f4 e623                                Y..#
23:54:08.634481 IP localhost.localdomain.37090 > localhost.localdomain.webmin: Flags [P.], seq 12:14, ack 1, win 512, options [nop,nop,TS val 1509221923 ecr 1509221923], length 2
        0x0000:  4510 0036 5baa 4000 4006 e105 7f00 0001  E..6[.@.@.......
        0x0010:  7f00 0001 90e2 2710 df8a 63ab f34f 178b  ......'...c..O..
        0x0020:  8018 0200 fe2a 0000 0101 080a 59f4 e623  .....*......Y..#
        0x0030:  59f4 e623 0d0a                           Y..#..
23:54:08.634589 IP localhost.localdomain.webmin > localhost.localdomain.37090: Flags [.], ack 14, win 512, options [nop,nop,TS val 1509221924 ecr 1509221923], length 0
        0x0000:  4500 0034 0814 4000 4006 34ae 7f00 0001  E..4..@.@.4.....
        0x0010:  7f00 0001 2710 90e2 f34f 178b df8a 63ad  ....'....O....c.
        0x0020:  8010 0200 fe28 0000 0101 080a 59f4 e624  .....(......Y..$
        0x0030:  59f4 e623  
        
23:57:25.068415 IP localhost.localdomain.37092 > localhost.localdomain.webmin: Flags [P.], seq 9:10, ack 1, win 512, options [nop,nop,TS val 1509418356 ecr 1509414441], length 1
        0x0000:  4510 0035 06b8 4000 4006 35f9 7f00 0001  E..5..@.@.5.....
        0x0010:  7f00 0001 90e4 2710 19f8 8055 85af 5a9c  ......'....U..Z.
        0x0020:  8018 0200 fe29 0000 0101 080a 59f7 e574  .....)......Y..t
        0x0030:  59f7 d629 c4                             Y..).
23:57:25.068541 IP localhost.localdomain.webmin > localhost.localdomain.37092: Flags [.], ack 10, win 512, options [nop,nop,TS val 1509418356 ecr 1509418356], length 0
        0x0000:  4500 0034 cb56 4000 4006 716b 7f00 0001  E..4.V@.@.qk....
        0x0010:  7f00 0001 2710 90e4 85af 5a9c 19f8 8056  ....'.....Z....V
        0x0020:  8010 0200 fe28 0000 0101 080a 59f7 e574  .....(......Y..t
        0x0030:  59f7 e574                                Y..t
23:57:25.068735 IP localhost.localdomain.37092 > localhost.localdomain.webmin: Flags [P.], seq 10:12, ack 1, win 512, options [nop,nop,TS val 1509418356 ecr 1509418356], length 2
        0x0000:  4510 0036 06b9 4000 4006 35f7 7f00 0001  E..6..@.@.5.....
        0x0010:  7f00 0001 90e4 2710 19f8 8056 85af 5a9c  ......'....V..Z.
        0x0020:  8018 0200 fe2a 0000 0101 080a 59f7 e574  .....*......Y..t
        0x0030:  59f7 e574 0d0a                           Y..t..
00:00:05.677262 IP localhost.localdomain.37100 > localhost.localdomain.webmin: Flags [P.], seq 1:2, ack 1, win 512, options [nop,nop,TS val 1509578963 ecr 1509573109], length 1
        0x0000:  4510 0035 e4e9 4000 4006 57c7 7f00 0001  E..5..@.@.W.....
        0x0010:  7f00 0001 90ec 2710 cd87 657f 6e2b ab29  ......'...e.n+.)
        0x0020:  8018 0200 fe29 0000 0101 080a 59fa 58d3  .....)......Y.X.
        0x0030:  59fa 41f5 c4                             Y.A..
00:00:05.677481 IP localhost.localdomain.webmin > localhost.localdomain.37100: Flags [.], ack 2, win 512, options [nop,nop,TS val 1509578964 ecr 1509578963], length 0
        0x0000:  4500 0034 eea8 4000 4006 4e19 7f00 0001  E..4..@.@.N.....
        0x0010:  7f00 0001 2710 90ec 6e2b ab29 cd87 6580  ....'...n+.)..e.
        0x0020:  8010 0200 fe28 0000 0101 080a 59fa 58d4  .....(......Y.X.
        0x0030:  59fa 58d3                                Y.X.
00:00:05.677694 IP localhost.localdomain.37100 > localhost.localdomain.webmin: Flags [P.], seq 2:4, ack 1, win 512, options [nop,nop,TS val 1509578964 ecr 1509578964], length 2
        0x0000:  4510 0036 e4ea 4000 4006 57c5 7f00 0001  E..6..@.@.W.....
        0x0010:  7f00 0001 90ec 2710 cd87 6580 6e2b ab29  ......'...e.n+.)
        0x0020:  8018 0200 fe2a 0000 0101 080a 59fa 58d4  .....*......Y.X.
        0x0030:  59fa 58d4 0d0a                           Y.X...
00:00:05.677798 IP localhost.localdomain.webmin > localhost.localdomain.37100: Flags [.], ack 4, win 512, options [nop,nop,TS val 1509578964 ecr 1509578964], length 0
        0x0000:  4500 0034 eea9 4000 4006 4e18 7f00 0001  E..4..@.@.N.....
        0x0010:  7f00 0001 2710 90ec 6e2b ab29 cd87 6582  ....'...n+.)..e.
        0x0020:  8010 0200 fe28 0000 0101 080a 59fa 58d4  .....(......Y.X.
        0x0030:  59fa 58d4   

Python 服务器脚本返回:“utf-8”编解码器无法解码字节“0xc4”

PHP 返回:问号 U+FFFD

我做错了什么?

标签: pythonlinuxsocketsutf-8telnet

解决方案


推荐阅读