问题描述
我正在尝试使用文件系统访问 API 获取文件,并且使用此代码效果很好:
resources:
Resources:
AccessLogs:
Type: AWS::Logs::LogGroup
Properties:
LogGroupName: /aws/lambda/${self:service}-dev-AccessLogs
RetentionInDays: 7
LambdaExecutionRole:
Type: 'AWS::IAM::Role'
Properties:
AssumeRolePolicyDocument:
Statement:
- Effect: Allow
Principal:
Service:
- lambda.amazonaws.com
Action:
- 'sts:AssumeRole'
Policies:
- PolicyName: logpolicy
PolicyDocument:
Statement:
- Effect: Allow
Action:
- 'logs:CreateLogGroup'
- 'logs:CreateLogStream'
Resource: '*'
- Effect: Allow
Action:
- 'logs:PutLogEvents'
Resource: 'arn:aws:logs:*:*:*'
'''
问题是当我们有一个 ANSI 编码的文件时,像 Ö、Ü 和 Ä 这样的德语字符变成了 � 虽然它适用于 UTF-8 编码的文件。
无论如何我都找不到在 ANSI 代码中使用 function Process_Files(files) {
[].map.call(files,async function (file,i) {
if (isDataFile(file.name)) {
let fileText = await file.text();
let filePath = await file.webkitRelativePath;
ProcessFileContents(await fileText,await filePath);
}
})
}
function DirectoryChose(event) {
let files;
event.stopPropagation();
event.preventDefault();
if (event.type === "change") {
files = event.target.files;
}
if (files) {
Process_Files(files)
}
}
dropArea.addEventListener("change",DirectoryChose);
读取文件
感谢帮助
解决方法
您需要使用具有正确编码的 FileReader()
API。有关详细信息,请参阅 MDN docs。例如,您可以读取如下数据:
// fileOrBlob is a File or a Blob :-)
const fileReader = new FileReader();
fileReader.readAsText(fileOrBlob,'windows-1252');
唯一需要注意的是,你需要事先知道编码。如果您不指定编码,则假定为 UTF-8。