我尝试使用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>
非常感谢。
答案 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
});
希望我的解决方案可以提供帮助。