相关疑难解决方法(0)

使用UTF8编码的Excel到CSV

我有一个Excel文件,其中包含一些西班牙语字符(波浪号等),我需要将其转换为CSV文件以用作导入文件.但是,当我另存为CSV时,它会破坏非特殊的西班牙语字符,而不是ASCII字符.它似乎也是用左右引号和长短划线来做的,它们似乎来自原始用户在Mac中创建Excel文件.

由于CSV只是一个文本文件,我确信它可以处理UTF8编码,所以我猜它是一个Excel限制,但我正在寻找一种从Excel到CSV并保留非ASCII字符的方法完整.

csv excel encoding utf-8

587
推荐指数
15
解决办法
75万
查看次数

是否可以强制Excel自动识别UTF-8 CSV文件?

我正在开发一个应用程序的一部分,负责将一些数据导出到CSV文件中.该应用程序始终使用UTF-8,因为它在各个层面都具有多语言特性.但是在Excel中打开这样的CSV文件(包含例如变音符号,西里尔字母,希腊字母)并没有达到预期的结果?„/?¤, ?–/?¶.而且我不知道如何强制Excel理解打开的CSV文件是用UTF-8编码的.我也尝试过指定UTF-8 BOM EF BB BF,但Excel忽略了这一点.

有没有解决方法?

PS哪些工具可能像Excel一样?


UPDATE

我不得不说,我把社区与问题的表述混为一谈.当我提出这个问题的时候,我想要一种在Excel中打开UTF-8 CSV文件的方法,而不会给用户带来任何问题,而且流畅透明.但是,我使用了错误的配方要求自动执行此操作.这非常令人困惑,它与VBA宏自动化发生冲突.这个问题有两个我最欣赏的答案:Alex /sf/answers/420163691/的第一个答案,我接受了这个答案; 第二个是由Mark /sf/answers/454164931/稍后出现的.从可用性的角度来看,Excel似乎缺乏良好的用户友好型UTF-8 CSV支持,因此我认为这两个答案都是正确的,我首先接受了Alex的答案,因为它确实表明Excel无法做到这是透明的.这就是我在这里自动混淆的.Mark的答案为更高级的用户提供了一种更复杂的方式来实现预期的结果.这两个答案都很棒,但亚历克斯的答案更符合我未明确指出的问题.


更新2

五个月后,在最后一次编辑之后,我注意到Alex的答案因某种原因消失了.我真的希望这不是一个技术问题,我希望现在不再讨论哪个答案更大.所以我接受马克的答案是最好的答案.

csv excel utf-8

412
推荐指数
12
解决办法
46万
查看次数

如何在PHP中输出UTF-8 CSV,Excel将正确读取?

我有一个非常简单的事情,只输出一些CSV格式的东西,但它必须是UTF-8.我在TextEdit或TextMate或Dreamweaver中打开这个文件,它正确地显示了UTF-8字符,但是如果我在Excel中打开它,它就是这样做的傻事.这是我在文档的头部所得到的:

header("content-type:application/csv;charset=UTF-8");
header("Content-Disposition:attachment;filename=\"CHS.csv\"");
Run Code Online (Sandbox Code Playgroud)

除了Excel(Mac,2008)不想正确导入它之外,这一切似乎都具有预期的效果.Excel中没有选项可以"以UTF-8打开"或其他任何东西,所以......我有点恼火.

尽管有很多人遇到同样的问题,我似乎无法在任何地方找到任何明确的解决方案.我最看重的是包含BOM,但我无法弄清楚如何做到这一点.正如你在上面看到的那样,我只是提供echo这些数据,我不会写任何文件.如果我需要,我可以这样做,我不是因为此时似乎不需要它.有帮助吗?

更新:我尝试回显echo pack("CCC", 0xef, 0xbb, 0xbf);我刚刚从试图检测BOM的网站上提取的BOM.但Excel只会在导入时将这三个字符附加到第一个单元格,并且仍会混淆特殊字符.

php csv byte-order-mark utf-8

181
推荐指数
13
解决办法
31万
查看次数

哪个编码在Mac和Windows上使用Excel正确打开CSV文件?

我们有一个Web应用程序,可以导出包含UTF-8的外来字符的CSV文件,没有BOM.Windows和Mac用户都在Excel中获得垃圾字符.我尝试用BOM转换为UTF-8; Excel/Win很好用,Excel/Mac显示乱码.我正在使用Excel 2003/Win,Excel 2011/Mac.这是我尝试过的所有编码:

Encoding  BOM      Win                            Mac
--------  ---      ----------------------------   ------------
utf-8     --       scrambled                      scrambled
utf-8     BOM      WORKS                          scrambled
utf-16    --       file not recognized            file not recognized
utf-16    BOM      file not recognized            Chinese gibberish
utf-16LE  --       file not recognized            file not recognized
utf-16LE  BOM      characters OK,                 same as Win
                   row data all in first field
Run Code Online (Sandbox Code Playgroud)

最好的是具有BOM的UTF-16LE,但CSV不被识别.字段分隔符是逗号,但分号不会改变.

是否有任何编码在两个世界都有效?

windows csv macos excel utf

132
推荐指数
4
解决办法
14万
查看次数

使用jQuery和html导出为CSV

我有一个表格数据,我需要导出到csv而不使用任何外部插件或API.我使用了window.open传递mime类型的方法但面临如下问题:

如何使用jquery确定系统上是否安装了Microsoft Excel或Open Office

代码应该独立于系统上安装的内容,即openoffice或ms excel.我相信CSV是可以预期在两个编辑器中显示的格式.

    <html>

<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>  

<script type="text/JavaScript">
$(document).ready(function(){
    $("#btnExport").click(function(e) {
        var msg = GetMimeTypes();
        //OpenOffice
        window.open('data:application/vnd.oasis.opendocument.spreadsheet,' + $('#dvData').html());
        //MS-Excel
        window.open('data:application/vnd.ms-excel,' + $('#dvData').html());
        //CSV
        window.open('data:application/csv,charset=utf-8,' + $('#dvData').html());
        e.preventDefault();
    });
});

function GetMimeTypes () {
    var message = "";
        // Internet Explorer supports the mimeTypes collection, but it is always empty
    if (navigator.mimeTypes && navigator.mimeTypes.length > 0) {
        var mimes = navigator.mimeTypes;
        for (var i=0; i < mimes.length; i++) {
            message += "<b>" + …
Run Code Online (Sandbox Code Playgroud)

html csv jquery export export-to-csv

73
推荐指数
2
解决办法
16万
查看次数

Javascript到csv导出编码问题

我需要将javascript数组导出到excel文件并下载它我在这段代码中执行它.data是一个javascript对象数组.

var csvContent = "data:text/csv;charset=utf-8,";
data.forEach(function(dataMember, index)
{
    dataString = dataMember.join(",");
    csvContent += index < data.length ? dataString+ "\n" : dataString;
}); 

var encodedUri = encodeURI(csvContent);
var link = document.createElement("a");
link.setAttribute("href", encodedUri);
link.setAttribute("download", "upload_data" + (new Date()).getTime() + ".csv");
link.click();
Run Code Online (Sandbox Code Playgroud)

所有这些东西都可以正常工作,直到我的字符串属性具有非英语字符,如西班牙语,阿拉伯语或希伯来语.如何使用所有这些非ASCII值进行导出?

javascript csv export-to-csv

51
推荐指数
5
解决办法
7万
查看次数

资源被解释为文档但使用MIME类型text/css传输

资源被解释为文档但使用MIME类型text/css传输

这是Google Chrome Inspector中显示的错误.

该文件是:http://www.doanddare.org/css/style.css

它由php处理器呈现.

我该如何解决这个错误?

返回的标头是:

请求标题

Accept:application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Cache-Control:max-age=0
User-Agent:Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3
Run Code Online (Sandbox Code Playgroud)

响应标题

HTTP/1.1 200 OK
Date: Sun, 10 Oct 2010 07:35:04 GMT
Server: Apache
content-style-type: text/css
Expires: Thu, 10 Oct 2030 03:50:23 GMT
Cache-Control: max-age=631138519, public
Content-Encoding: gzip
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/css
Connection: Keep-Alive
Run Code Online (Sandbox Code Playgroud)

是否可以将请求标头作为文档发送,并将响应标头作为css文件返回?

如果是这样,我应该如何控制请求标头?

谢谢你的帮助.

css php http-headers

36
推荐指数
1
解决办法
4万
查看次数

在java和csv文件中设置UTF-8

我正在使用此代码通过OpenCSV将波斯语单词添加到csv文件中:

String[] entries="\u0645 \u062E\u062F\u0627".split("#");
try{
    CSVWriter writer=new CSVWriter(new OutputStreamWriter(new FileOutputStream("C:\\test.csv"), "UTF-8"));

    writer.writeNext(entries);
    writer.close();
}
catch(IOException ioe){
    ioe.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

当我打开生成的csv文件时,在Excel中,它包含"ứỶờịỆ".其他程序,如notepad.exe没有此问题,但我的所有用户都使用MS Excel.

用SuperCSV替换OpenCSV并不能解决这个问题.

当我手动将波斯字符键入csv文件时,我没有任何问题.

java csv unicode utf-8 opencsv

33
推荐指数
3
解决办法
8万
查看次数

导出制表符分隔时使用的最佳mime类型和扩展名是什么?

我遇到过这样的问题,即Excel不能与UTF-8编码的CSV文件一起使用.请参阅Stack Overflow上的相关问题.

我遵循导出为UTF-16的解决方案,但似乎使用UTF-16,逗号字符不能作为分隔符,只有制表符.

但是,我找不到任何正确的文件名和mime类型应该是制表符分隔文件.我找到了某个地方,说它是application/vnd.ms-excel和xls.这适用于Excel 2003但2007不批准.

那应该是什么?

csv excel export tab-delimited mime-types

23
推荐指数
1
解决办法
1万
查看次数

如何在java中添加UTF-8 BOM

我有一个Java存储过程,它使用Resultset对象从表中获取记录并创建一个csv文件.

BLOB retBLOB = BLOB.createTemporary(conn, true, BLOB.DURATION_SESSION);
retBLOB.open(BLOB.MODE_READWRITE);
OutputStream bOut = retBLOB.setBinaryStream(0L);
ZipOutputStream zipOut = new ZipOutputStream(bOut);
PrintStream out = new PrintStream(zipOut,false,"UTF-8");
out.write('\ufeff');
out.flush();
zipOut.putNextEntry(new ZipEntry("filename.csv"));
while (rs.next()){
    out.print("\"" + rs.getString(i) + "\"");
    out.print(",");
}
out.flush();
zipOut.closeEntry();
zipOut.close();
retBLOB.close();
return retBLOB;
Run Code Online (Sandbox Code Playgroud)

但生成的csv文件未显示正确的德语字符.Oracle数据库的NLS_CHARACTERSET值也为UTF8.

请建议.

java byte-order-mark character-encoding oracle10g

18
推荐指数
5
解决办法
6万
查看次数