javascript - 在 ngCordova 文件插件中使用 readAsText 时如何设置编码

标签 javascript cordova csv encoding ngcordova

我正在尝试使用 readAsText ngCordova 插件读取 CSV 文件的内容。

只有当文件编码为unicode时我才能做到这一点,但大多数CSV文件都是Shift-JIS。当文件为 Shift-JIS

时,我无法从文件中读取任何内容

我的代码如下:

$cordovaFile.readAsText(cordova.file.documentsDirectory + CSVS_DIR, fileName).then(
    function (success) {
        console.log("reading csv");
        console.log("csv content: " + success); 
    },
    function (error) {
        console.log(error);
        // error
    });

有人知道如何处理吗?

非常感谢。

最佳答案

纠结这个问题一整天,终于找到答案了。

不幸的是,答案是否定的。我们无法通过使用readAsText来实现它。

根据docs of ngCordova ,API 不支持像 cordova-file-plugin 那样的 readAsText 函数中的编码参数。

此外,在我读完document of codova-file-plugin之后,我意识到Cordova-file-plugin中的readAsText函数在ios中运行时不支持encoding参数。

解决方案

由于readAsText无法做到这一点,我尝试了ngCordova中提供的其他功能。我发现了readAsBinaryString。该函数似乎只是读取文件的内容,无论文件的编码是什么。因此,我可以读取内容并将其编码为 Unicode encoding.js .

代码:

$cordovaFile.readAsBinaryString(cordova.file.documentsDirectory + CSVS_DIR, fileName).then(
    function (success) {
        console.log("reading csv");
        console.log("csv content: " + success);
        var detected = Encoding.detect(success);
        success = Encoding.convert(success, {
            to: 'UNICODE', // to_encoding
            from: detected // from_encoding
        });

        console.log("csv content: " + success);         
    },
    function (error) {
        console.log(error);
        // error    
    });

希望我的解决方案能有所帮助。

关于javascript - 在 ngCordova 文件插件中使用 readAsText 时如何设置编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36256788/

相关文章:

javascript - 使用 style.position 定位对象

javascript - JS - 使用 window.print() 打印字符串

android - Windows 上的 ionic : Android SDK installed. 仍然得到 "Error: Please install Android target: "android-22"

php - 无法在 Phonegap android 中使用 AJAX、jQuery 和 php 将数据存储在 mysql 中

r - R 中的 3D 曲面图,给定 x,y,z 坐标

javascript - 用我自己的自定义类包装元素

javascript - 如何使用 CSS 根据百分比定位 div

jquery - 使用 jQueryMobile 限制 ListView 中的行数

Python:如何将两个 for 语句变成一个?

ruby - 字符串无法写入 CSV 文件 Ruby