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

时间:2016-03-28 05:56:30

标签: 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
    });

有没有人知道如何处理它?<​​/ p>

非常感谢。

1 个答案:

答案 0 :(得分:1)

在这个问题上整整一天后,我终于找到了答案。

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

根据docs of ngCordova,API不支持readAsText函数中的编码参数,如cordova-file-plugin所具有的。

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

<强>解

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

代码:

$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    
    });

希望我的解决方案可以提供帮助。