【问题标题】:Google Apps script txt file getDataAsString() returns � and square symbols between charactersGoogle Apps 脚本 txt 文件 getDataAsString() 在字符之间返回 � 和方形符号
【发布时间】:2020-09-21 22:10:45
【问题描述】:

目前

我有一个包含一些数据的.txt 文件:

                      Z Financial

Company name of the tax subject :

我有一个 google 脚本文件,用于从 .txt 获取数据并转换为 JSON 格式以粘贴到 Google 表格中(就像在 Google 表格中手动导入一样)

片段:

    let files = folder.getFiles();
    var file = files.next();
    var raw = file.getBlob().getDataAsString();
    console.log(raw);
    var data = Utilities.parseCsv(raw)

问题

console.log(raw) 正在返回:

data 变量返回为长度为 1 的数组,其值为:�� ,仅此而已。

从上面的.txt sn-p,我(大致)期望一个长度 = 3 的数组,行如下:

  • Z 金融
  • 纳税主体的公司名称:

注意事项

  • ISO-8859-1 替换默认的UTF-8 编码并不能解决问题。回报:

问题

为了将 txt 解析为 CSV,我缺少什么?

【问题讨论】:

  • 仅仅因为文件名包含“.txt”并不能使其成为文本文件。如果您单击 Google Drive 中的文件,然后查看右侧的“详细信息”窗格,是否说明它是文本文件?您是否创建了文本文件?如果是这样,您是如何创建它的?
  • @AlanWells,是的,谷歌驱动器中的右侧窗格有type: Text,但我没有创建文件。它是从外部软件系统通过电子邮件发送给我的。
  • 还意识到该文件不是CSV。如果是分隔符,您需要在 Utilities.parseCsv() 调用中传递分隔符。
  • @Diego,需要先得到一个可行的字符串。

标签: google-apps-script text-parsing


【解决方案1】:

代码没有设置字符集。尝试使用正确的字符集。

var charset = 'ISO-8859-1'; // This is just a suggestion to try first
var raw = file.getBlob().getDataAsString(charset);

注意:OP 在评论中提到他们的文件使用的字符集是UTF-16

参考

相关

【讨论】:

  • 默认字符集是UTF-8。我已经尝试了替代ISO-8859-1,它只替换了�符号,而不是方形符号。
  • @Wronski 您的文件使用什么字符集?
  • 完美。我没有意识到 Google Script 支持其他选项。文件的编码是UTF-16,一旦我用它作为参数,它就解决了这个问题!谢谢你:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-10
  • 2010-12-02
  • 1970-01-01
  • 2013-09-28
  • 1970-01-01
相关资源
最近更新 更多