在十六进制(Java)中添加字段分隔符1C

在十六进制(Java)中添加字段分隔符1C,java,encoding,character-encoding,hex,ascii,Java,Encoding,Character Encoding,Hex,Ascii,我需要在消息中使用“1C”(十六进制)作为字段分隔符。但是,当我手动将1C放入消息并在UltraEdit中查看最终消息的十六进制输出时,我看到的是31 63,即1和C的十六进制IMAL等价物。如何确保它在十六进制输出中也保持为1C?我无法在消息中输入与之相当的ASCII码 打开示例请求消息时,我在UltraEdit上看到ASCII字符串中只有一个“.”(点),十六进制转储中只有一个1C,这就是我想要的。事实上,Notepad++也显示为“FS”,但我的消息只显示1C 谢谢。通过将'\u001c'

我需要在消息中使用“1C”(十六进制)作为字段分隔符。但是,当我手动将1C放入消息并在UltraEdit中查看最终消息的十六进制输出时,我看到的是31 63,即1和C的十六进制IMAL等价物。如何确保它在十六进制输出中也保持为1C?我无法在消息中输入与之相当的ASCII码

打开示例请求消息时,我在UltraEdit上看到ASCII字符串中只有一个“.”(点),十六进制转储中只有一个1C,这就是我想要的。事实上,Notepad++也显示为“FS”,但我的消息只显示1C


谢谢。

通过将
'\u001c'
作为字符常量写入,或将
“..\u001c…”
包含在字符串文字中,可以获得值为1C的字符。

通过将
'\u001c'
作为字符常量写入,或将
“..\u001c…”包含在字符串文字中,可以获得值为1C的字符
字符串文本。

如何存储消息?以下几点效果不错:

String message = "some\u001ctext\n";
for (byte b : message.getBytes("ISO-8859-1")) {
    System.out.println(b);
}

PrintWriter writer = new PrintWriter("message.txt", "ISO-8859-1");
writer.append(message);
writer.close();

(根据评论更新)

您如何存储此消息?以下几点效果不错:

String message = "some\u001ctext\n";
for (byte b : message.getBytes("ISO-8859-1")) {
    System.out.println(b);
}

PrintWriter writer = new PrintWriter("message.txt", "ISO-8859-1");
writer.append(message);
writer.close();

(根据评论更新)

使用这个符号怎么样

public static final byte FIELD_SEPARATOR   = 0x1C;

用这个符号怎么样

public static final byte FIELD_SEPARATOR   = 0x1C;


char literal
\u001C
应该可以完成这个任务。这就完成了任务,非常感谢!什么在消耗您的消息以及您是如何发送它们的?通过套接字(im客户端)发送,服务器也是Java的,我相信。但我们必须使用这种编码,因为我只是在Java中模拟支付终端(用C编码)的功能,1C是一个标准的字段分隔符。在将字符串转换为字节时,请务必使用与支付终端相同的编码。char-literal
\u001C
应该起作用。这就起到了作用,谢谢!什么在消耗您的消息以及您是如何发送它们的?通过套接字(im客户端)发送,服务器也是Java的,我相信。但我们必须使用这种编码,因为我只是在用Java模拟支付终端(用C编码)的功能,1C是一个标准的字段分隔符。请确保在将字符串转换为字节时使用与支付终端相同的编码。谢谢,@JoachimSauer在写完答案后刚刚检查了这一点。我猜最近C太多了。@MarkoTopolnik:如果你把你的答案写成一个答案而不是一个评论,我就不必复制它,但我可以删除我的答案在我的书中,有些答案不值得回答。因此,回答意见。@MarkoTopolnik:不使用答案回答将导致问题在技术上无法回答的时间超过要求的时间。因此,这只会导致更多的人花更多的时间在那些“不值得”的问题上。只要马尔科没有问题,我会接受这是正确的答案,以防将来有人查到。谢谢,@JoachimSauer在写下答案后只是检查一下。我猜最近C太多了。@MarkoTopolnik:如果你把你的答案写成一个答案而不是一个评论,我就不必复制它,但我可以删除我的答案在我的书中,有些答案不值得回答。因此,回答意见。@MarkoTopolnik:不使用答案回答将导致问题在技术上无法回答的时间超过要求的时间。因此,这只会导致更多的人花更多的时间在那些“不值得”的问题上。只要Marko没有问题,我会接受这是正确的答案,以防将来有人查找。你当然是对的,这些行应该是
message.getBytes(“ISO-8859-1”)
new PrintWriter(文件名,“ISO-8859-1”)
@JoachimSauer:UTF-8没有将U+001C编码为0x1c,我无法理解你的意思。这样做遵循规范,并在我的系统上工作。你认为问题出在哪里?@MvG:你当然是对的。我今天应该停止发帖了,我读到的值是C1!所有ASCII兼容编码当然会将U+001C编码为0x1C。您当然是对的,这些行应该读取
message.getBytes(“ISO-8859-1”)
new PrintWriter(文件名,“ISO-8859-1”)
@JoachimSauer:我不能理解您在UTF-8上没有将U+001C编码为0x1C。这样做遵循规范,并在我的系统上工作。你认为问题出在哪里?@MvG:你当然是对的。我今天应该停止发帖了,我读到的值是C1!所有ASCII兼容编码当然将U+001C编码为0x1C。