python - 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
我做错了什么?
解决方案
推荐阅读
- node.js - 如何将项目配置文件与包裹捆绑在一起
- excel - 使用嵌入式 Excel 文件保存工作簿
- python - 带有 numpy 的矢量化内积
- outlook - 执行 Microsoft Graph API 调用会返回特定邮件的重复消息
- java - 如何将 Spring Boot 服务从 Google Cloud Run 连接到 SQL 云实例?
- webdriver - 有没有办法在 webdriver 测试的文本字段中找到光标位置
- java - Mockito 返回与传递的 ArrayList 相同的参数
- 3d - 给定一个 2D 图像和一个目标点,确定 3D 世界中的对应点
- java - 当我在 xml 文件中使用带有值的单元(即 vp、fp、px)时,相应的属性不起作用?(和谐操作系统)
- flutter - SVG图像不出现,没有错误