JavaScript blob 编码为 UTF-8 而不是 ANSI

标签 javascript encoding utf-8 blob ansi

我使用 JavaScript blob 创建一个 FDF 文件,该文件打开并填充本地存储的 PDF。

但是,本地存储的 PDF 的文件路径包含重音字符(我无法编辑文件夹名称)。

当文件夹路径不包含重音符并且如果我在记事本中打开 fdf,默认编码为 ANSI 时,此代码有效。但是,当文件夹路径包含重音符号时,FDF 打开一条消息,指出无法找到 PDF。此外,记事本中的默认编码已更改为 UTF-8。

FDF_Text = ''
    + '%FDF-1.2' + "\n"
    + '1 0 obj<</FDF<</F(T:/Échange/MY_PDF.pdf)/Fields 2 0 R>>>>' + "\n"
    + 'endobj' + "\n"
    + '2 0 obj[' + "\n" 
    + '<</T(FIELD_NAME)/V(SOME_TEXT)>>' + "\n"
    + ']' + "\n" 
    + 'endobj' + "\n"
    + 'trailer' + "\n"
    + '<</Root 1 0 R>>' + "\n"
    + '%%EO'


var blobObject = new Blob([FDF_Text], {type: 'text/css;charset=ANSI'}); 
window.navigator.msSaveOrOpenBlob(blobObject, 'MY_FDF.fdf');

我试过了

  • 用 E 替换 É
  • 使用 String.fromCharCode(201)(É 的字符值)
  • 将 blob 本身的“类型”更改并删除为我发现的几个不同示例(抱歉,我没有跟踪所有不同的组合)。

谁能提出不同的解决方案?

最佳答案

您可以将数据表示为二进制,只需遍历字符串并填充一个二进制数组

    FDF_Text = ''
        + '%FDF-1.2' + "\n"
        + '1 0 obj<</FDF<</F(T:/Échange/MY_PDF.pdf)/Fields 2 0 R>>>>' + "\n"
        + 'endobj' + "\n"
        + '2 0 obj[' + "\n" 
        + '<</T(FIELD_NAME)/V(SOME_TEXT)>>' + "\n"
        + ']' + "\n" 
        + 'endobj' + "\n"
        + 'trailer' + "\n"
        + '<</Root 1 0 R>>' + "\n"
        + '%%EO'
    
    var uint8 = new Uint8Array(FDF_Text.length);
    for (var i = 0; i <  uint8.length; i++){
        uint8[i] = FDF_Text.charCodeAt(i);
    }
    var blobObject = new Blob([uint8], {type: 'text/fdf'}); 
    window.navigator.msSaveOrOpenBlob(blobObject, 'MY_FDF.fdf');

关于JavaScript blob 编码为 UTF-8 而不是 ANSI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32510273/

相关文章:

javascript - array.find 不适用于 Babel

javascript - jQuery:获取目的地和内容

javascript - 在脚本 block 之前显示消息

C++ UTF-8 字符串

php - UTF-8贯穿始终

javascript - 如何记录多个复选框的选择顺序?

c# - 将 C# 源代码写入文件

powershell - Windows 中的 Git Shell : patch's default character encoding is UCS-2 Little Endian - how to change this to ANSI or UTF-8 without BOM?

c# - 如何确保使用 utf-8 文件编码保存 XDocument?

mysql - 以 UTF 8 格式将数据插入 MYSQL 时出现问题