我正在尝试使用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对象中的Charset更改为" ANSI"或" Windows-1252"或" CP-1252",则它不起作用。
注意:我在Windows 7上使用Chrome
根据我的经验,我发现Dynamics GP宏使用ANSI。
您首先需要将文本编码为包括阿拉伯语(Windows-1256/cp1256(的ANSI。
我使用此JS库来编码文本:https://github.com/mathiasbynens/windows-1256
var text= windows1256.encode(text);
然后,您需要将其转换为8位未签名的整数并使用斑点导出。
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'});
我知道这个答案为时已晚,但我希望它会有所帮助。
我知道这是超级旧的,但是我几乎是积极的,除非最近发生了什么变化,否则GP数据库都是非固定的。这对您不起作用。