Text and charsets
The text flows allow to translate a stream of text data according to the used character sets. It supports conversion between ByteString and String, as well as conversion of the character set in binary text data in the form of ByteStrings.
The main use case for these flows is the transcoding of text read from a source with a certain character set, which may not be usable with other flows or sinks. For example may CSV data arrive in UTF-16 encoding, but the Alpakka CSV parser does only support UTF-8.
Project Info: Alpakka Text | |
---|---|
Artifact | com.lightbend.akka
akka-stream-alpakka-text
6.0.0+3-654dc53a-SNAPSHOT
|
JDK versions | Adopt OpenJDK 8 Adopt OpenJDK 11 |
Scala versions | 2.13.10, 2.12.17 |
JPMS module name | akka.stream.alpakka.text |
License | |
Readiness level |
Since 0.20, 2018-07-04
|
Home page | https://doc.akka.io/docs/alpakka/current |
API documentation | |
Forums | |
Release notes | GitHub releases |
Issues | Github issues |
Sources | https://github.com/akka/alpakka |
Artifacts
- sbt
val AkkaVersion = "2.8.1" libraryDependencies ++= Seq( "com.lightbend.akka" %% "akka-stream-alpakka-text" % "6.0.0+3-654dc53a-SNAPSHOT", "com.typesafe.akka" %% "akka-stream" % AkkaVersion )
- Maven
<properties> <akka.version>2.8.1</akka.version> <scala.binary.version>2.13</scala.binary.version> </properties> <dependencies> <dependency> <groupId>com.lightbend.akka</groupId> <artifactId>akka-stream-alpakka-text_${scala.binary.version}</artifactId> <version>6.0.0+3-654dc53a-SNAPSHOT</version> </dependency> <dependency> <groupId>com.typesafe.akka</groupId> <artifactId>akka-stream_${scala.binary.version}</artifactId> <version>${akka.version}</version> </dependency> </dependencies>
- Gradle
def versions = [ AkkaVersion: "2.8.1", ScalaBinary: "2.13" ] dependencies { implementation "com.lightbend.akka:akka-stream-alpakka-text_${versions.ScalaBinary}:6.0.0+3-654dc53a-SNAPSHOT" implementation "com.typesafe.akka:akka-stream_${versions.ScalaBinary}:${versions.AkkaVersion}" }
The table below shows direct dependencies of this module and the second tab shows all libraries it depends on transitively.
- Direct dependencies
Organization Artifact Version com.typesafe.akka akka-stream_2.13 2.8.1 org.scala-lang scala-library 2.13.10 - Dependency tree
com.typesafe.akka akka-stream_2.13 2.8.1 BUSL-1.1 com.typesafe.akka akka-actor_2.13 2.8.1 BUSL-1.1 com.typesafe config 1.4.2 Apache-2.0 org.scala-lang.modules scala-java8-compat_2.13 1.0.0 Apache-2.0 org.scala-lang scala-library 2.13.10 Apache-2.0 org.scala-lang scala-library 2.13.10 Apache-2.0 com.typesafe.akka akka-protobuf-v3_2.13 2.8.1 BUSL-1.1 com.typesafe ssl-config-core_2.13 0.6.1 Apache-2.0 com.typesafe config 1.4.2 Apache-2.0 org.scala-lang scala-library 2.13.10 Apache-2.0 org.reactivestreams reactive-streams 1.0.4 MIT-0 org.scala-lang scala-library 2.13.10 Apache-2.0 org.scala-lang scala-library 2.13.10 Apache-2.0
Text transcoding
The text transcoding flow converts incoming binary text data (ByteString) to binary text data of another character encoding.
The flow fails with an UnmappableCharacterException
, if a character is not representable in the targeted character set.
- Scala
-
source
import java.nio.charset.StandardCharsets import akka.stream.alpakka.text.scaladsl.TextFlow import akka.stream.scaladsl.FileIO val byteStringSource: Source[ByteString, _] = // ... byteStringSource .via(TextFlow.transcoding(StandardCharsets.UTF_16, StandardCharsets.UTF_8)) .runWith(FileIO.toPath(targetFile))
- Java
-
source
Source<ByteString, ?> byteStringSource = // ... byteStringSource .via(TextFlow.transcoding(StandardCharsets.UTF_16, StandardCharsets.UTF_8)) .runWith(FileIO.toPath(targetFile), system);
Text encoding
The text encoding flow converts incoming Strings to binary text data (ByteString) with the given character encoding.
The flow fails with an UnmappableCharacterException
, if a character is not representable in the targeted character set.
- Scala
-
source
import java.nio.charset.StandardCharsets import akka.stream.alpakka.text.scaladsl.TextFlow import akka.stream.scaladsl.FileIO val stringSource: Source[String, _] = // ... stringSource .via(TextFlow.encoding(StandardCharsets.US_ASCII)) .intersperse(ByteString("\n")) .runWith(FileIO.toPath(targetFile))
- Java
-
source
import akka.stream.alpakka.testkit.javadsl.LogCapturingJunit4; import akka.stream.alpakka.text.javadsl.TextFlow; import akka.stream.IOResult; import akka.stream.javadsl.FileIO; import akka.stream.javadsl.Sink; import akka.stream.javadsl.Source; import akka.util.ByteString; import java.nio.charset.StandardCharsets; Source<String, ?> stringSource = // ... stringSource .via(TextFlow.encoding(StandardCharsets.US_ASCII)) .intersperse(ByteString.fromString("\n")) .runWith(FileIO.toPath(targetFile), system);
Text decoding
The text decoding flow converts incoming ByteStrings to Strings using the given character encoding.
- Scala
-
source
import java.nio.charset.StandardCharsets import akka.stream.alpakka.text.scaladsl.TextFlow val byteStringSource: Source[ByteString, _] = // ... val result: Future[immutable.Seq[String]] = byteStringSource .via(TextFlow.decoding(StandardCharsets.UTF_16)) .runWith(Sink.seq)
- Java
-
source
Source<ByteString, ?> byteStringSource = // ... byteStringSource .via(TextFlow.decoding(StandardCharsets.UTF_16)) .runWith(Sink.seq(), system);