UTF-16在OSX与Windows上的行为不同

时间:2016-03-30 08:28:38

标签: java macos csv selenium utf-16

我创建了一个程序,它接受一个csv文件,读取它的值,并根据我用selenium webdriver执行某些操作的值。

问题是我使用os x,而其他人在Windows上使用它,在上传文件之前你需要编辑一些行(而不是所有时间),然后格式化正在改变并导致问题,但有时甚至没有改变任何问题发生...但在Mac上没有问题......

我正在使用utf-16,因为我下载的网站给了我utf-16 csv' s。这是我的代码的一部分:

object CsvDataSource extends DataSource {

  import com.github.tototoshi.csv.{CSVFormat, QUOTE_MINIMAL, Quoting}

  implicit object MYFormat extends CSVFormat {
    val delimiter: Char = '\t'
    val quoteChar: Char = '"'
    val escapeChar: Char = '"'
    val lineTerminator: String = "\r\n"
    val quoting: Quoting = QUOTE_MINIMAL
    val treatEmptyLineAsNil: Boolean = false
  }

  override def read(file: File): Seq[Map[String, String]] = {

    val reader = CSVReader.open(file, "UTF-16")(MYFormat)

    reader.iteratorWithHeaders.toList
  }
}  

因此,要使用我的程序,您需要使用某个网站下载文件,这个网站在utf-16中提供csv,然后将其上传到我的程序并完成魔术。但在我的Mac上它工作正常,并且在运行Windows的电脑有时我们会遇到格式化问题...有人知道如何解决这个问题并使其与两个操作系统兼容吗?

示例问题:

play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[ParseException: Unparseable date: "1-DEC-15"]]

大部分时间都是这个问题,但有时当我修复日期格式时,它仍然可以正常工作,有时它确实有效。我不知道为什么我得到这个问题有时会导致格式很好...日期是假设是" 1-DEC-15"像这样。我需要以这种格式获取它并以不同的方式返回它,这是我做的:

private def changeDateFormat(dateInString: String): String = {
    val inputFormat: SimpleDateFormat = new SimpleDateFormat("dd-MMM-yy")
    val resultFormat: SimpleDateFormat = new SimpleDateFormat("dd/MM/yyyy")

    val date: Date = inputFormat.parse(dateInString)
    resultFormat.format(date)
  }

0 个答案:

没有答案