相关疑难解决方法(0)

Microsoft Excel在.csv文件中破坏了变音符号?

我以编程方式将数据(使用PHP 5.2)导出到.csv测试文件中.
示例数据:( Numéro 1注意重音e).数据是utf-8(没有前置BOM).

当我在MS Excel中打开此文件时显示为Numéro 1.

我可以在文本编辑器(UltraEdit)中打开它,正确显示它.UE报告角色是decimal 233.

如何在.csv文件中导出文本数据以便MS Excel正确呈现它,最好不强制使用导入向导或非默认向导设置?

csv excel encoding diacritics

184
推荐指数
7
解决办法
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万
查看次数

StreamWriter和UTF-8字节顺序标记

我遇到了StreamWriter和Byte Order Marks的问题.该文档似乎表明Encoding.UTF8编码已启用字节顺序标记,但是当写入文件时,一些文件具有标记,而其他文件没有.

我正在以下列方式创建流编写器:

this.Writer = new StreamWriter(this.Stream, System.Text.Encoding.UTF8);
Run Code Online (Sandbox Code Playgroud)

任何有关可能发生的事情的想法都将受到赞赏.

c# file-encodings

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

如何在带有BOM的UTF8编码的C#中使用GetBytes()?

我在C#中的asp.net mvc 2应用程序中遇到UTF8编码问题.我正在尝试让用户从字符串下载一个简单的文本文件.我试图用以下行获取字节数组:

var x = Encoding.UTF8.GetBytes(csvString);

但当我使用以下命令返回下载时:

return File(x, ..., ...);

我得到一个没有BOM的文件,所以我没有正确显示克罗地亚字符.这是因为我的bytes数组在编码后不包含BOM.我手动插入这些字节然后它正确显示,但这不是最好的方法.

我还尝试创建UTF8Encoding类实例并将布尔值(true)传递给其构造函数以包含BOM,但它也不起作用.

有人有解决方案吗?谢谢!

asp.net-mvc encoding byte-order-mark utf-8

45
推荐指数
2
解决办法
4万
查看次数

将UTF-8 BOM添加到字符串/ Blob

我需要在客户端为生成的文本数据添加UTF-8字节顺序标记.我怎么做?

当然,使用new Blob(['\xEF\xBB\xBF' + content])产量'"my data"'.

也没有'\uBBEF\x22BF'工作('\x22' == '"'成为下一个角色content).

是否可以将JavaScript中的UTF-8 BOM添加到生成的文本中?

是的,在这种情况下我确实需要UTF-8 BOM.

javascript byte-order-mark blob utf-8 fileapi

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

九月= ";" 声明破坏了由XSL生成的CSV文件中的utf8 BOM

我目前正在使用XSLT开发CSV导出.在我的情况下,CSV文件将使用%99%的Excel,因此我必须考虑Excel行为.

我的第一个问题是csv中的德国特殊字符.即使CSV编码是UTF8,Excel也无法使用UTF8正确打开CSV文件.特殊字符变得怪异的符号.我找到了解决这个问题的方法.我刚刚添加了3个额外字节(EF BB BF - 又名BOM头),内容字节开头.因为UTF8 BOM是说'嘿伙计,它是UTF8,正确打开它'到Excel.问题解决了!

我的第二个问题是分离器.默认分隔符可以是逗号或分号,具体取决于区域.我认为它是德国的分号和英国的逗号.所以,为了防止出现这个问题,我不得不在下面添加一行:

<xsl:text>sep=;</xsl:text>
Run Code Online (Sandbox Code Playgroud)

要么

<xsl:text>sep=,</xsl:text>
Run Code Online (Sandbox Code Playgroud)

(此分隔符未实现为硬编码)

但我找不到任何解决方案的问题是,如果你添加"sep =;" 或者,当使用UT8-BOM生成CSV文件时,文件的开头"sep =",BOM无法再正确显示特殊字符!我确信BOM字节总是在字节数组的开头.此屏幕截图来自Mac OS X中的MS Excel:

在此输入图像描述

前3个符号属于BOM表头.

你有没有想过这个问题,或者你有什么建议吗?谢谢.

编辑:

我分享了打印屏幕.

一个.BOM和 <xsl:text>sep=;</xsl:text>

在此输入图像描述

湾 只是BOM

在此输入图像描述

Java代码:

// Write the bytes
ServletOutputStream out = resp.getOutputStream();
if(contentType.toString().equals("CSV")) {
  // The additional bytes in below is prefix indicates that the content is in UTF-8.
  out.write(239);
  out.write(187);
  out.write(191);
} 
out.write(bytes); // Content bytes, in this case XSL
Run Code Online (Sandbox Code Playgroud)

XSL代码:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="text" version="1.0" encoding="UTF-8" indent="yes" /> …
Run Code Online (Sandbox Code Playgroud)

csv xslt excel

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

utf-8 和 utf-8-sig 有什么区别?

我正在尝试使用 Pandas 数据帧在 python 中编码孟加拉语单词。但是作为编码类型,utf-8 不起作用但 utf-8-sig 起作用。我知道 utf-8-sig 带有 BOM(字节顺序标记)。但是为什么这被称为 utf-8-sig 以及它是如何工作的?

python encoding pandas

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

使用C#创建的UTF-8 CSV文件显示Excel中的字符

当使用C#生成CSV文件并在Microsoft Excel中打开时,它会显示特殊符号前的字符,例如£

在Notepad ++中,Â的十六进制值为:C2

所以在将£符号写入文件之前,我已尝试过以下内容......

    var test = "£200.00";
    var replaced = test.Replace("\xC2", " ");

    StreamWriter outputFile = File.CreateText("testoutput.csv"); // default UTF-8
    outputFile.WriteLine(replaced);
    outputFile.Close(); 
Run Code Online (Sandbox Code Playgroud)

在Excel中打开CSV文件时,我仍然在£符号前面看到"Â"字符(十六进制等效\ xC2\xA3); 它没有任何区别.

我需要使用不同的编码吗?还是我错过了什么?

.net c# csv excel utf-8

6
推荐指数
1
解决办法
5023
查看次数

使用fputcsv将BOM添加到CSV文件

我生成了一个包含外来字符的简单CSV文件.我已经注意到,如果我没有包含字节顺序标记,外国字符在Excel中没有正确显示(但是当存在BOM时它们看起来很好).

如何在首次创建文件时将BOM添加到文件的开头?我尝试了以下内容并且无法正常工作: - /

function processForm($competition, $competitionEntry) {
    $BOM = "\xEF\xBB\xBF"; // UTF-8 BOM

    $filename = $competition->ID.".csv";
    $file = "entries/".$filename;     

    $fields = array_keys($competitionEntry);
    $submittedForm = $competitionEntry;

    if(file_exists($file)) {
        $fp = fopen($file, 'a');
        if($fp && 
            fputcsv($fp, $submittedForm) && 
            fclose($fp)) {
            return true;
        } 
    } else { // CREATE NEW FILE
        $fp = fopen($file, 'w');
        if($fp && 
            fputcsv($fp, $BOM) && // WRITE BOM TO FILE   
            fputcsv($fp, $fields) &&
            fputcsv($fp, $submittedForm) &&
            fclose($fp)) {     
            return true;
        } 
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

php csv excel byte-order-mark fputcsv

5
推荐指数
1
解决办法
8681
查看次数

用supercsv写UTF-8 BOM

我正在使用supercscv来编写一个utf-8编码的csv.它产生一个普通的文件,但是excel不会将它识别为utf-8,因为它没有bom标记,因此擅长丢失,因此当使用excel打开时,任何特殊字符都会被破坏.

有没有办法将文件写为UTF-8与BOM与supercsv?我找不到它.

谢谢

java csv byte-order-mark utf-8 supercsv

5
推荐指数
1
解决办法
7868
查看次数