首页 > 解决方案 > 如何在scala spark中将字符代码从UTF-8转换为Shift JIS?

问题描述

我想在 data.txt文件中将字符代码从 UTF-8 转换为 Shift-JIS。

我应该怎么办?

这是我的代码,但它不正确。

它存在以下问题。

  1. 不要在火花环境中运行。错误:访问列表时出现 java.lang.IndexOutOfBoundsException
  2. 结果输出是字符编码为 ANSI 而不是 Shift-jis 的文件。
    import scala.io.Source 
    import scala.io._ 
    import scala.collection.mutable.ArrayBuffer 
    import scala.collection.mutable 
    import java.io.BufferedReader 
    import java.io.BufferedWriter 
    import java.io.File 
    import java.io.FileInputStream 
    import java.io.FileOutputStream 
    import java.io.InputStreamReader 
    import java.io.OutputStreamWriter 
    import org.apache.spark.SparkContext._ 
    import org.apache.spark.rdd.RDD 
    import org.apache.spark.sql.SparkSession 

    object uconv { 
      def main(args: Array[String]): Unit = { 
        val sparkSession = SparkSession.builder.master("local").appName("Spark_Accumulator").getOrCreate() 
        val fis: FileInputStream = new FileInputStream(new File("data.txt")) 
        val in: BufferedReader = new BufferedReader(new InputStreamReader(fis, "UTF8")) 
        val fos: FileOutputStream = new FileOutputStream(new File("output.txt")) 
        val out: BufferedWriter = new BufferedWriter(new OutputStreamWriter(fos, "SJIS")) 
        val len: Int = 80 
        val buf: Array[Char] = Array.ofDim[Char](len) 
        var numRead: Int = 0 
        while ((numRead = in.read(buf, 0, len)) != -1) 
        out.write(buf, 0, numRead) 
        out.close() 
        in.close() 
      } 
    }

请更正代码以正确帮助我。

标签: scalaapache-spark

解决方案


推荐阅读