Javascript 宏文件用阿拉伯语和英语编码的文本文件

Javascript text file encoding with Arabic and English for macro file

我正在尝试使用 JavaScript 导出文本文件以用作 Microsoft Dynamics GP 的宏。

问题是当我尝试在 GP 中使用宏时,阿拉伯字母无法正确呈现。

例如,“النسر”将呈现为“ط§ظ„ظ†ط³ط±”

我的 JavaScript 代码使用 FileSaver.js

var file = new Blob([text], {type:"text/plain;charset=utf-8;"});
saveAs(file, filename);

我找到的一个解决方案是在下载文件后用 ANSI 编码保存它。但是,如果我将 JavaScript Blob 对象中的字符集更改为 "ansi" 或 "Windows-1252" 或 "cp-1252" 它不起作用。

注意:我在 Windows 7

上使用 Chrome

我知道这太旧了,但我几乎可以肯定,除非最近发生了一些变化,否则 GP 数据库都是非 unicode 的。这对你不起作用。

根据我的经验,我发现 Dynamics GP 宏使用 ANSI。

您首先需要将您的文本编码为包含阿拉伯语 (windows-1256/CP1256) 的 ANSI。

我使用这个 js 库对文本进行编码: https://github.com/mathiasbynens/windows-1256

var text= windows1256.encode(text);

然后您需要将其转换为 8 位无符号整数并使用 Blob 将其导出。

var uint8 = new Uint8Array(text.length);
for (var i = 0; i < uint8.length; i++)
{
  uint8[i] = text.charCodeAt(i);
}
var file = new Blob([uint8], {type: 'text/plain;charset=windows-1256'}); 

我知道这个答案为时已晚,但我希望它能有所帮助。