5

我对字符集有疑问。

我在 google-app-engine 中解析了一个 csv 文件,并将其发布到 uiapp 表中。但是我检查了 áéíóú 等特殊字符,但这些字符显示效果不佳(?方形符号)。

当我设置我的代码时,我尝试编写导入到谷歌文档文档的字符串,它的工作原理是一样的。

请给点建议?

我搜索:

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

重要的是我来自西班牙,我们需要这样的角色。

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

我发布了我所有的代码,它几乎没有给出的教程。

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;
}
4

1 回答 1

4

找到了,我们需要先用一个Blob对象来获取文件的内容。这个函数是我用来将一些 csv 信息解析成数组的函数:

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');
于 2013-11-18T14:39:47.773 回答