繁体   English   中英

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

[英]JavaScript blob encoding as UTF-8 instead of 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)(É的chr值)
  • 更改和删除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'); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM