I tried to figure it out myself, but I don't have any idea why it's not working properly. I'm trying to send letter "ą" (U+0105, hex: c4 85) via telnet into my server application. I wrote example server using python and PHP scripts. As clients I used PHP, .NET - everything was fine, but when I've tried use telnet - strange things started to happend.
Let me show you tcpdump debug:
Character "!" (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
Character "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
Character "£" (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
Character "ą" (c4 85) sent using PHP/Python script
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.
Character "ą" (c4 85) using telnet from Ubuntu 16.04, 20.04 and Putty:
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 server script returns: 'utf-8' codec can't decode byte "0xc4"
PHP returns: question mark U+FFFD
What I'm doing wrong?