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'});
我知道这个答案为时已晚,但我希望它能有所帮助。
我正在尝试使用 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'});
我知道这个答案为时已晚,但我希望它能有所帮助。