jquery - 当我使用 jQuery 将表导出到 csv 时,欧元符号变为 â

标签 jquery csv export

当我使用以下代码进行导出时:JSFiddle

HTML:

<div id="dvData">
    <table>
        <tr>
            <th>Column One</th>
            <th>Column Two</th>
            <th>Column Three</th>
        </tr>
        <tr>
            <td>€ 100,0</td>
            <td>row1 Col2</td>
            <td>row1 Col3</td>
        </tr>
        <tr>
            <td>€ 120,99</td>
            <td>row2 Col2</td>
            <td>row2 Col3</td>
        </tr>
        <tr>
            <td>€ 120,99</td>
            <td>row3 Col2</td>
            <td>row3 Col3</td>
        </tr>
    </table>
</div>

Javascript:

$(document).ready(function () {

    function exportTableToCSV($table, filename) {

        var $rows = $table.find('tr:has(td)'),

            // Temporary delimiter characters unlikely to be typed by keyboard
            // This is to avoid accidentally splitting the actual contents
            tmpColDelim = String.fromCharCode(11), // vertical tab character
            tmpRowDelim = String.fromCharCode(0), // null character

            // actual delimiter characters for CSV format
            colDelim = '";"',
            rowDelim = '"\r\n"',

            // Grab text from table into CSV formatted string
            csv = '"' + $rows.map(function (i, row) {
                var $row = $(row),
                    $cols = $row.find('td');

                return $cols.map(function (j, col) {
                    var $col = $(col),
                        text = $col.text();

                    return text.replace('"', '""'); // escape double quotes

                }).get().join(tmpColDelim);

            }).get().join(tmpRowDelim)
                .split(tmpRowDelim).join(rowDelim)
                .split(tmpColDelim).join(colDelim) + '"',

            // Data URI
            csvData = 'data:application/csv;charset=UTF-8;,' + encodeURIComponent(csv);

        $(this)
            .attr({
            'download': filename,
                'href': csvData,
                'target': '_blank'
        });
    }

    // This must be a hyperlink
    $(".export").on('click', function (event) {
        // CSV
        exportTableToCSV.apply(this, [$('#dvData>table'), 'export.csv']);

        // IF CSV, don't do event.preventDefault() or return false
        // We actually need this to be a typical hyperlink
    });
});

输出如下:

Example output I get

但我希望输出看起来像:

Example output I want

我怎样才能实现这一目标?字符集设置为“UTF-8”。 UTF-8 包含欧元符号对吗?那么为什么我会得到 – 作为输出?

最佳答案

你的html文件是使用UTF-8编码吗?

如果您使用其他的,您可以获得此结果

关于jquery - 当我使用 jQuery 将表导出到 csv 时,欧元符号变为 â,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27401331/

相关文章:

python - 使用 Python 2.7 读写 CSV 文件,包括 unicode

javascript - 在 JS 问题中重构 jQuery

javascript - 如何在不删除子表内容的情况下删除父表?

Java:如何设计一个需要其子级的多个属性来处理文件的类?

c# - 将 Excel 导出到 C#

java - JODconverter:仅安装来自 openoffice 的 pdf 生成器

javascript - 在使用 Jquery 或 JS 加载(或被看到)之前修改 HTML 元素

jquery - 如何点击 iframe 将其删除?

python - 如何使用 Python 从文本文件中读取元数据(带标签)

python - 使用 R 或 Matplotlib (Python),如何根据 CSV 文件每一行的值比较创建维恩图?