如何解决.gs脚本中的字符集问题? [英] How do I fix charset problems in .gs script?

查看:76
本文介绍了如何解决.gs脚本中的字符集问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在google-app-engine中解析了一个csv文件,并将其发布到uiapp表中.但是我检查了诸如áéíóú之类的特殊字符,但这些字符显示得不好(方形符号).

I parsed a csv file in google-app-engine and I'm posting to an uiapp table. But I checked special characters like áéíóú and those are not well displayed (?square symbol).

设置代码时,我玩过写导入到google docs文档中的字符串,并且它的工作原理相同.

When I was setting up my code I played writing the string imported to a google docs document and it worked the same.

请问一些建议吗?

  • 代码的全局字符集定义.或
  • string var转换,使字符看起来像我想要的.(避免使用html & number 定义.
  • 这与blob对象有关吗?

这件事很重要,我来自西班牙,我们需要这样的角色.

获得了csv的应用程序;'分隔文件并显示其内容

我发布了我所有的代码,这几乎与所提供的教程一样.

I post all my code, it's barely as the tutorial that is given.

function arreglaUrl(cadena){
  var texto = cadena[cadena.length - 2]
  if (texto == ''){
    cadena[cadena.length - 2] = 'Sin enlace';
  }
  else{
    cadena[cadena.length - 2] = '<center><a href=\"'+ texto + '\">Link.</a></center>' ;
  };

}

function parsedCSV(){

  var listaArchivos = DocsList.getFolderById('XXXXX').getFiles()

  for (var i = 0; i < listaArchivos.length; i++) {
    if (listaArchivos[i].getName() == 'baul.csv'){
      var origen = listaArchivos[i];
      };
  } 
  var texto = origen.getContentAsString();
  var arra = Utilities.parseCsv(texto,";");
  return(arra);
}



function doGet() {

  var datos = parsedCSV()


  var baul = Charts.newDataTable()
    for (i = 0; i < datos[0].length; i++){

        baul.addColumn(Charts.ColumnType.STRING, datos[0][i])   
    }

    for (i = 1; i < datos.length; i++){
      arreglaUrl(datos[i]) // this only makes some html i need to post some links
      baul.addRow(datos[i])

     }
    baul.build();



  var sectorFilter = Charts.newCategoryFilter()
      .setFilterColumnLabel("sector")
      .build();

  var tipoFilter = Charts.newCategoryFilter()
      .setFilterColumnLabel("tipo")
      .build();
  var searchFilter = Charts.newStringFilter()
      .setFilterColumnLabel("Titulo")
      .build();
  var searchDesc = Charts.newStringFilter()
      .setFilterColumnLabel("descripcion")
      .build();


  var tableChart = Charts.newTableChart().setOption('allowHtml', true).setDimensions(0,0)
      .build();

    var dashboard = Charts.newDashboardPanel()
      .setDataTable(baul)
      .bind([sectorFilter, tipoFilter, searchFilter, searchDesc], [tableChart])
      .build();

  var uiApp = UiApp.createApplication().setTitle('Baul de Recursos');
  var anchoTotal = '100%';
  dashboard.add(uiApp.createVerticalPanel()

                .add(uiApp.createHorizontalPanel()
                     .add(sectorFilter)
                     .add(tipoFilter)
                     .setSpacing(15)

                    )

                .add(uiApp.createHorizontalPanel()        
                     .add(searchFilter)
                     .add(searchDesc)
                     .setSpacing(15)                
                    )

                    .add(uiApp.createHorizontalPanel()
                         .add(tableChart).setBorderWidth(1).setHorizontalAlignment(UiApp.HorizontalAlignment.CENTER).setWidth(anchoTotal)
                        )

                );

  uiApp.add(dashboard);
  return uiApp;
}

推荐答案

我找到了它,我们需要首先使用Blob对象获取文件的内容.此函数是我用来将某些csv信息解析为数组的函数:

I found it, we need to get the content of the file first with a Blob object. This function is the one I use to parse some csv info into an array:

function parsedCSV(){
  
 //searching the file. This gets only one file in var origen
  var listaArchivos = DocsList.getFolderById('XXXXXXX').getFiles()
  
  for (var i = 0; i < listaArchivos.length; i++) {
    if (listaArchivos[i].getName() == 'baul.csv'){
      var origen = listaArchivos[i];
  };
}

// HERE IS THE GOOD DEFINITION OF CHAR:
var texto2= origen.getBlob().getDataAsString('ISO-8859-1');
// I put all the corrected text in an array

var arra = Utilities.parseCsv(texto2,";");
return(arra);
}

这是已解决的问题: https://script.google.com/macros/s/AKfycbyHa-bLWBHBr3qifbvzxecqGgGUYX8mhyo-TKoyfGvy/exec

var textVariableName = fileObjectVariableName.getBlob().getDataAsString('ISO-8859-1');

这篇关于如何解决.gs脚本中的字符集问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆