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

how to set encoding when using readAsText in ngCordova file plugin

本文关键字:readAsText 设置 编码 ngCordova 文件 插件      更新时间:2023-09-26

我正在尝试使用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来实现它。

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

此外,在阅读了codova文件插件的文档后,我意识到Cordova文件中的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    
    });

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