无法读取 UTF-16 文件
Posted
技术标签:
【中文标题】无法读取 UTF-16 文件【英文标题】:Unable to read UTF-16 file 【发布时间】:2021-03-24 14:05:08 【问题描述】:我正在尝试在 Spark 数据帧中读取编码为 UTF-16 的文件。但是,当我显示我的数据框的结果时,我的结果集中出现了不需要的特殊字符。
我尝试了以下方法 - 使用 UTF-16BE:
df = spark.read.format('text').option("encoding", 'UTF-16BE').option("charset", 'UTF-16').option('delimiter', "\|").option('header', 'false').option("quote", "\"").option("escape", "\"").load(filepath)
并使用 UTF-16LE 尝试了以下操作:
df = spark.read.format('text').option("encoding", 'UTF-16LE').option("charset", 'UTF-16').option('delimiter', "\|").option('header', 'false').option("quote", "\"").option("escape", "\"").load(filepath)
两次尝试都返回不需要的特殊字符。
非常感谢任何帮助。
【问题讨论】:
text
格式不支持编码选项。请改用csv
。在此处查看可用选项:text、csv。
【参考方案1】:
我认为您想使用csv
而不是text
,因为text
格式不支持您尝试使用的选项。试试看:
df = spark.read.format("csv")\
.option("encoding", "UTF-16")\
.option('sep', "|")\
.option("escape", "\"")\
.load(filepath)
请注意,选项header
的默认值为 false,因此无需指定它,quote
也是如此。另外,没有charset
选项,你只需要encoding
选项。
您可以在此处找到每个数据源的所有可用选项:DataFrameReader
【讨论】:
以上是关于无法读取 UTF-16 文件的主要内容,如果未能解决你的问题,请参考以下文章
如何读取 UTF-16 文件并将其内容与使用十六进制值定义的 wchar_t* 字符串文字进行比较