Appending extended ascii in strings
我尝试使用扩展的ASCII字符179(看起来像管道)。
这是我使用它的方法。
1 2 3 4 5 |
产量
1 | cmd 023CO30310130330F |
但是输出是这样的。我已经读到扩展的ASCII字符没有正确显示。
Is my code correct and just the ascii is not correctly displayed
or my code is wrong.
我不关心向用户显示这个字符串,我需要将它发送到服务器。
编辑供应商的API文档声明我们需要使用ASCII179(看起来像管道)。服务器端代码需要179(扩展ASCII的一部分)作为管道/垂直线,因此我不能使用124(管道)
编辑2
这是扩展ASCII的表
On the other hand this table shows that ascii 179 is"3" . Why
are there different interpretation of the same and which one should I
consider??
编辑3我的默认字符集值是(这与我的问题有关吗?)
1 2 |
谢谢!
我提到过
如何将字符转换为字符串?
如何用整数值打印Java中扩展的ASCII代码谢谢
您的代码是正确的;串接字符串值和char值可以达到预期的效果。179的价值观是错误的。你可以谷歌"unicode 179",你会发现"unicode字符‘上标三’(u+00b3)",正如人们所期望的。您可以简单地说"char pipe='';",而不是使用整数。或者更好:string pipe="",它还允许您灵活地使用多个字符:)
为了回应新的编辑…
我建议您在Java字符串级别上修复这个相当低级的问题,而不是在将字节发送到服务器之前替换这个字符的字节编码?
例如这样的东西(未经测试)
1 2 3 4 5 6 7 8 9 | byte[] bytes = cmd.getBytes(); // all ascii, so this should be safe. for (int i = 0; i < bytes.length; i++) { if (bytes[i] == '|') { bytes[i] = (byte)179; } } // send command bytes to server // don't forget endline bytes/chars or whatever the protocol might require. good luck :) |
使用以下代码。
1 2 3 4 5 |
输出:
1 2 | cmd 02│CO│0│101│03│0F int value: 9474 |
我正在使用Intellij。这是我得到的输出。