Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过网络发送UTF-8编码字符安全吗?_Java_Networking_Encoding_Utf 8_Character Encoding - Fatal编程技术网

Java 通过网络发送UTF-8编码字符安全吗?

Java 通过网络发送UTF-8编码字符安全吗?,java,networking,encoding,utf-8,character-encoding,Java,Networking,Encoding,Utf 8,Character Encoding,使用标准Base64格式编码的原因是为了确保它不包含任何可能被视为网络控制字符的控制字符。这确保通过网络传输的另一端接收相同的数据 在这种情况下,UTF-8字符编码是否通过在输出中不提供任何控制字符来提供与Base64相同的功能,以便我们可以通过网络发送它 使用标准Base64格式编码的原因是为了确保它不包含任何可能被视为网络控制字符的控制字符 上述说法是不正确的。Base64专门用于使用64个可打印ASCII字符对二进制数据进行编码。只有在特定情况下才有必要将二进制数据嵌入旨在传输文本的协议中

使用标准Base64格式编码的原因是为了确保它不包含任何可能被视为网络控制字符的控制字符。这确保通过网络传输的另一端接收相同的数据

在这种情况下,UTF-8字符编码是否通过在输出中不提供任何控制字符来提供与Base64相同的功能,以便我们可以通过网络发送它

使用标准Base64格式编码的原因是为了确保它不包含任何可能被视为网络控制字符的控制字符

上述说法是不正确的。Base64专门用于使用64个可打印ASCII字符对二进制数据进行编码。只有在特定情况下才有必要将二进制数据嵌入旨在传输文本的协议中,例如在电子邮件中嵌入附件;通过网络传输数据通常不需要它。例如,HTTP在没有它的情况下可以很好地管理

在这种情况下,UTF-8字符编码是否通过在输出中不提供任何控制字符来提供与Base64相同的功能,以便我们可以通过网络发送它

不是。UTF-8是一种Unicode字符串格式。它不能用于对任意二进制数据进行编码

使用标准Base64格式编码的原因是为了确保它不包含任何可能被视为网络控制字符的控制字符

上述说法是不正确的。Base64专门用于使用64个可打印ASCII字符对二进制数据进行编码。只有在特定情况下才有必要将二进制数据嵌入旨在传输文本的协议中,例如在电子邮件中嵌入附件;通过网络传输数据通常不需要它。例如,HTTP在没有它的情况下可以很好地管理

在这种情况下,UTF-8字符编码是否通过在输出中不提供任何控制字符来提供与Base64相同的功能,以便我们可以通过网络发送它


不是。UTF-8是一种Unicode字符串格式。它不能用于对任意二进制数据进行编码。

UTF-8编码不涉及ASCII中的控制字符0-31,因此,如果您的协议无法安全传输这些字符,则无法使用UTF-8解决问题

UTF-8是将unicode文本编码为8位字节流,而不是转义控制字符。它解决了一个不同的问题


注意,UTF-8编码的输入是unicode文本,而不是随机字节:例如,不可能用UTF-8编码字节0x83:您可以将cp737中编码的希腊字母Δ转换为0x83,或者将cp855中编码的俄语字母Ѓ编码为0x83,转换为UTF8,但结果会有所不同,Δ为0xCE+0x94,而Ѓ为0xD0+0x83。

ASCII中的控制字符0-31不受UTF-8编码的影响,因此,如果您的协议无法安全传输它们,则无法使用UTF-8解决问题

UTF-8是将unicode文本编码为8位字节流,而不是转义控制字符。它解决了一个不同的问题


注意,UTF-8编码的输入是unicode文本,而不是随机字节:例如,不可能用UTF-8编码字节0x83:您可以将cp737中编码的希腊字母Δ转换为0x83,或者将cp855中编码的俄语字母Ѓ编码为0x83,转换为UTF8,但是结果会不同Δ是0xCE+0x94,而Ѓ是0xD0+0x83。

还可以补充说UTF-8也不是关于编码任意二进制数据。好的,我看到UTF-8不能转换回一些字节序列,所以在这种情况下,不能使用它。对吗?@Ayyappa:UTF-8编码输入是文本,而不是字节。请参阅编辑后的答案。。。你不能用UTF-8编码字节0x83,你可以编码Δ或Ѓ。还可以补充一点,UTF-8也不是关于编码任意二进制数据。好的,我看到UTF-8不能转换回一些字节序列,所以在这种情况下,不能使用它。对吗?@Ayyappa:UTF-8编码输入是文本,而不是字节。请参阅编辑后的答案。。。你不能用UTF-8编码字节0x83,你可以编码Δ或Ѓ。我明白你的意思了。这里我考虑通过网络传输字节序列。也就是说,如果以相同的字节流发送,则包含一些控制字符的数据很可能在网络另一端的接收端被错误解释。所以Base64来营救。你还看到我在这里遗漏的东西吗?是什么让你认为这些字符会被错误解读?除非您没有提到涉及某些网络协议,否则进行解释的只有您的应用程序。网络本身并不关心你的数据,你说得很清楚!谢谢。当以字符串形式发送字节steam并在另一端将其读回时,是的,我们的应用程序执行错误的解释
N谢谢你的提问。它澄清了这一点。我认为,网络协议考虑了我们发送的数据中的控制字符。这里我考虑通过网络传输字节序列。也就是说,如果以相同的字节流发送,则包含一些控制字符的数据很可能在网络另一端的接收端被错误解释。所以Base64来营救。你还看到我在这里遗漏的东西吗?是什么让你认为这些字符会被错误解读?除非您没有提到涉及某些网络协议,否则进行解释的只有您的应用程序。网络本身并不关心你的数据,你说得很清楚!谢谢。当以字符串形式发送字节steam并在另一端将其读回时,是的,我们的应用程序执行错误的解释。谢谢你的提问。它澄清了这一点。我认为,网络协议考虑了我们发送的数据中的控制字符。