【问题标题】:Encoding Accented Characters in React JS在 React JS 中编码重音字符
【发布时间】:2020-11-28 07:23:18
【问题描述】:

用户上传带有 émily、ástha 等重音字符的 CSV,我需要对其进行编码并传递给后端。我尝试在type: 'text/plain'type: 'text/csv' 之间更新FormData 中的文件类型。

const data = new FormData()
data.append('file', new Blob([params.file], { type: 'text/csv' }))

FileReader 的方法readAsText 中传递编码,参数为ISO-8859-1ISO-8859-4ISO-10646-UCS-Basic,以及来自http://www.iana.org/assignments/character-sets/character-sets.xhtml 的几个其他示例。不用说,尝试了其他无用的方法readAsArrayBufferreadAsBinaryString

reader.readAsText(file, 'ISO-8859-4')

使用ISO-8859-1 打印给我的Žmily‡stha 不够接近。我需要能够接收准确的字符(后端使用ascii folding filter 将这些字符转换为 ascii)。

我依靠How to encode & decode non Ascii characters? 作为最后的解决方案。

关于如何尝试编码非 ascii 字符的任何指针?

【问题讨论】:

    标签: javascript reactjs encoding diacritics non-ascii-characters


    【解决方案1】:

    这可能与 csv 编码 issue 有关。您可以先将Byte-Order-Mark (BOM) 添加到 csv 内容中,尝试

    const BOM = "\uFEFF"; 
    
    new Blob([BOM + params.file], { type: 'text/csv;charset=utf-8' })
    

    【讨论】:

    • 谢谢,@anthony。原来上传的文件不是utf-8格式。它在更新编码后工作。
    猜你喜欢
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    相关资源
    最近更新 更多