2017-09-20 54 views
-1

直升机我有一个问题,变音符号..在MySQL它的罚款,我设置你CAND在这个图片中看到的utf8_general_ci enter image description here导出为CSV:罗马尼亚语言字符失败

在我的网站

它的罚款,你可以看到

enter image description here

但是,当我导出到CSV文件不工作.. 另一个具有变音符的文件中读取Excel的我,但这不是。

enter image description here

我使用此代码用于出口

function doCsv(){ 

    var table = document.getElementById("exportTable").innerHTML; 
    var data = table.replace(/<thead>/g,'').replace(/<\/thead>/g,'') 
    .replace(/<tbody>/g,'').replace(/<\/tbody>/g,'') 
    .replace(/<tr role="row" class="odd">/g,'').replace(/<tr role="row" class="even">/g,'').replace(/<\/tr>/g,'\r\n') 
    .replace(/<th style="background-color:#6699ff;">/g,'').replace(/<\/th>/g,';') 
    .replace(/<td>/g,'').replace(/<\/td>/g,';') 
    .replace(/\t/g,'').replace(/\n/g,''); 
    var link = document.createElement('a'); 
    link.download = "exportToCSV.csv"; 
    link.href = "data:application/csv," + escape(data); 
    link.click(); 

如果我把警报它一直很好看:

enter image description here

任何人帮助我吗?

回答

0

查看%u0218?这意味着东西正在转换为Unicode。你不想那样。你想要utf8(或utf8mb4)。

从表中选择HEX。对于这些字母:ĂÎŞŢÂ,如果以UTF-8正确编码:C482 C38E C59E C5A2 C382,则应该得到此十六进制数。请注意,每个带重音符号的字母变成2个十六进制字节

你的第二次尝试回来了ĂÎŞŢÂ,这是“Mojibake”为ĂÎŞŢÂ。它的十六进制是C384E2809AC383C5BDC385C5BEC385C2A2C383E2809A

我讨论Mojibake并指出Trouble with UTF-8 characters; what I see is not what I stored中做错了什么。

不知何故,您的Excel代码需要说出口UTF-8,而不是unicode。

而你的表格必须是utf8而不是latin1

而进口必须声明数据是utf8