首页 > 解决方案 > 什么是字符串值中的编码器?

问题描述

我正在阅读一个 CSV 文件,使用com.opencsv.CSVReader如下所示

String[] headers = csvReader.readNext();

标题的值如下屏幕截图所示:

在此处输入图像描述

这里的编码器是什么(以黄色突出显示)?

为什么第一个索引的值为 1,所有其他索引的值为 0?

标签: javastringjava-11opencsvcsvreader

解决方案


官方的回应是“不关你的事”,因为它是一个私有成员 :P 这意味着它很可能是特定于实现的,并且在其他供应商的 JVM 版本中找不到。

实际响应可以在该类的源代码中找到String

用于编码字节的编码标识符。此实现中支持的值是

  LATIN1
  UTF16
 

该字段受 VM 信任,如果 String 实例为常量,则该字段受常量折叠的影响。构建后覆盖该字段会导致问题。

至于为什么第一个不同,这取决于每个String实例的实例化方式。默认值的选择取决于 JVM 设置的参数。与默认值不同的值表明它String是从另一个String或字节数组构建的。

在第一种情况下,这意味着原始字符串coder本身具有该值。

在第二种情况下,它取决于调用类的decode方法的结果,该方法StringCoding返回一个对象,其code值取决于我上面谈到的初始参数(JVM设置的那个)和传递给构造函数的编码的String


推荐阅读