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

时间:2015-05-02 05:24:23

标签: java networking encoding utf-8 character-encoding

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

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

2 个答案:

答案 0 :(得分:4)

  

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

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

  

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

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

答案 1 :(得分:1)

UTF-8编码不会触及控制字符(ASCII格式为0-31),因此如果您的协议无法安全传输,则无法使用UTF-8解决问题。

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

请注意,UTF-8编码的输入是 unicode text ,而不是随机字节:例如,无法使用UTF-8对字节0x83进行编码:您可以做什么将cp737中编码的希腊字母"Δ"转换为0x83为UTF-8,或者您可以将cp855中编码的俄语字母"Ѓ"编码为0x83为UTF8,但是结果会有所不同(“Δ”为0xCE+0x94,而“Ѓ”为0xD0+0x83)。