Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.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
Ruby 如何在Scala中解码/编码ASCII8bit?_Ruby_Scala_Base64_Ascii 8bit - Fatal编程技术网

Ruby 如何在Scala中解码/编码ASCII8bit?

Ruby 如何在Scala中解码/编码ASCII8bit?,ruby,scala,base64,ascii-8bit,Ruby,Scala,Base64,Ascii 8bit,我有一个用Ruby编写的外部系统,它通过ASCII8bit编码的线路发送数据。我应该如何在Scala中解码和编码它们 我在scala中找不到用于解码和编码ASCII8bit字符串的库 据我所知,正确地说,ASCII8bit与Base64类似。但是,Base64编码不止一种。我应该使用哪种类型的编码来确保覆盖所有角落的情况 什么是ASCII-8BIT? ASCII-8BIT是Ruby的二进制编码。在指定编码名称时,二进制名称被接受为ASCII-8BIT的别名。它既用于二进制数据,也用于不知道其真实

我有一个用Ruby编写的外部系统,它通过ASCII8bit编码的线路发送数据。我应该如何在Scala中解码和编码它们

我在scala中找不到用于解码和编码ASCII8bit字符串的库

据我所知,正确地说,ASCII8bit与Base64类似。但是,Base64编码不止一种。我应该使用哪种类型的编码来确保覆盖所有角落的情况

什么是ASCII-8BIT? ASCII-8BIT是Ruby的二进制编码。在指定编码名称时,二进制名称被接受为ASCII-8BIT的别名。它既用于二进制数据,也用于不知道其真实编码的文本

在ASCII-8位编码中,任何字节序列都是有效字符串,但与其他8位编码不同,只有ASCII范围内的字节才被视为可打印字符,当然也只有那些可在ASCII中打印的字符。128-255范围内的字节被视为特殊字符,在其他编码中没有表示形式。因此,尝试将ASCII-8BIT字符串转换为任何其他编码都将失败,或者根据您提供的编码选项将非ASCII字符替换为问号,除非它仅包含ASCII字符

它在Scala/JVM世界中的等价物是什么? 没有严格的等价物。如果您处理的是二进制数据,那么应该使用没有编码且不被视为包含文本的二进制流

如果您处理的是文本,您需要知道或以某种方式找出它的编码,或者任意选择一个8位ASCII超集编码。这样,如果文本实际上是用不同的编码方式编码的,那么非ASCII字符可能会显示为错误字符,但不会出现任何错误,因为任何字节都是有效字符。如果需要,可以将非ASCII字符替换为问号

这与Base64有什么关系? 没什么。Base64是一种将二进制数据表示为ASCII文本的方法。它本身不是字符编码。知道字符串具有字符编码ASCII或ASCII-8BIT或任何其他编码,并不能告诉您它是否包含Base64数据

但请注意,Base64字符串将完全由ASCII字符组成,而不仅仅是任何ASCII字符,而是仅由字母、数字、+、/和=。因此,如果字符串包含任何非ASCII字符或除上述字符以外的任何字符,则它不是Base64

因此,任何Base64字符串都可以表示为ASCII。因此,如果您有一个包含Ruby中Base64数据的ASCII-8BIT字符串,那么您应该能够将其转换为ASCII而不会出现任何问题。如果不能,它不是Base64。

什么是ASCII-8BIT? ASCII-8BIT是Ruby的二进制编码。在指定编码名称时,二进制名称被接受为ASCII-8BIT的别名。它既用于二进制数据,也用于不知道其真实编码的文本

在ASCII-8位编码中,任何字节序列都是有效字符串,但与其他8位编码不同,只有ASCII范围内的字节才被视为可打印字符,当然也只有那些可在ASCII中打印的字符。128-255范围内的字节被视为特殊字符,在其他编码中没有表示形式。因此,尝试将ASCII-8BIT字符串转换为任何其他编码都将失败,或者根据您提供的编码选项将非ASCII字符替换为问号,除非它仅包含ASCII字符

它在Scala/JVM世界中的等价物是什么? 没有严格的等价物。如果您处理的是二进制数据,那么应该使用没有编码且不被视为包含文本的二进制流

如果您处理的是文本,您需要知道或以某种方式找出它的编码,或者任意选择一个8位ASCII超集编码。这样,如果文本实际上是用不同的编码方式编码的,那么非ASCII字符可能会显示为错误字符,但不会出现任何错误,因为任何字节都是有效字符。如果需要,可以将非ASCII字符替换为问号

这与Base64有什么关系? 没什么。Base64是一种将二进制数据表示为ASCII文本的方法。它本身不是字符编码。知道字符串具有字符编码ASCII或ASCII-8BIT或任何其他编码,并不能告诉您它是否包含Base64数据

但请注意,Base64字符串将完全由ASCII字符组成,而不仅仅是任何ASCII字符,而是仅由字母、数字、+、/和=。因此,如果字符串包含任何非ASCII字符或除上述字符以外的任何字符,则它不是Base64

因此,任何Base64字符串都可以表示为ASCII。因此,如果您有一个包含Ruby中Base64数据的ASCII-8BIT字符串,那么您应该能够将其转换为ASCII而不会出现任何问题。如果你不能,那就不是Base64
.

你试过什么?密码错误?我试图通过akka.parboiled2.util.Base64.rfc245进行解码,结果成功了。然而,我不知道它什么时候停止工作,因为它不一样。也许是一样的,但我不知道去哪里查。你试过什么?密码错误?我试图通过akka.parboiled2.util.Base64.rfc245进行解码,结果成功了。然而,我不知道它什么时候停止工作,因为它不一样。也许是一样的,但我不知道去哪里查。