`

PHP 读取或生成Unicode csv文件(PHP读取淘宝CSV文件出现乱码解决方案)

    博客分类:
  • PHP
 
阅读更多
=======先介绍下BOM==============

Bytes	Encoding Form
EF BB BF UTF-8
FF FE UTF-16 aka UCS-2, little endian
FE FF UTF-16 aka UCS-2, big endian
00 00 FF FE UTF-32 aka UCS-4, little endian.
00 00 FE FF UTF-32 aka UCS-4, big-endian.

=======================

读取 unicode csv 文件

 

function fopen_utf8($filename){
    $encoding='';
    $handle = fopen($filename, 'r');
    $bom = fread($handle, 2);
//    fclose($handle);
    rewind($handle);
 
    if($bom === chr(0xff).chr(0xfe)  || $bom === chr(0xfe).chr(0xff)){
            // UTF16 Byte Order Mark present
            $encoding = 'UTF-16';
    } else {
        $file_sample = fread($handle, 1000) + 'e'; //read first 1000 bytes
        // + e is a workaround for mb_string bug
        rewind($handle);
 
        $encoding = mb_detect_encoding($file_sample , 'UTF-8, UTF-7, ASCII, EUC-JP,SJIS, eucJP-win, SJIS-win, JIS, ISO-2022-JP');
    }
    if ($encoding){
        stream_filter_append($handle, 'convert.iconv.'.$encoding.'/UTF-8');
    }
    return  ($handle);
}

 

生成 unicode csv (此php文件一定要是无BOM的UTF-8编码文件)

$content=iconv("UTF-8","UTF-16LE",$content);
$content = "\xFF\xFE".$content; //添加BOM
header("Content-type: text/csv;charset=UTF-16LE") ;
header("Content-Disposition: attachment; filename=test.csv");
 
再介绍一个 操作 ANSI 编码 以 "," 隔开的 操作类
 
参考:<a href="http://www.jb51.net/article/21416.htm">http://www.jb51.net/article/21416.htm</a>

 

 

<?php
// Unicode BOM is U+FEFF, but after encoded, it will look like this.
define ('UTF32_BIG_ENDIAN_BOM'   , chr(0x00) . chr(0x00) . chr(0xFE) . chr(0xFF));
define ('UTF32_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE) . chr(0x00) . chr(0x00));
define ('UTF16_BIG_ENDIAN_BOM'   , chr(0xFE) . chr(0xFF));
define ('UTF16_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE));
define ('UTF8_BOM'               , chr(0xEF) . chr(0xBB) . chr(0xBF));
 
 function detect_utf_encoding($filename) {
 
     $text = file_get_contents($filename);
     $first2 = substr($text, 0, 2);
     $first3 = substr($text, 0, 3);
     $first4 = substr($text, 0, 3);
 
     if ($first3 == UTF8_BOM) return 'UTF-8';
     elseif ($first4 == UTF32_BIG_ENDIAN_BOM) return 'UTF-32BE';
     elseif ($first4 == UTF32_LITTLE_ENDIAN_BOM) return 'UTF-32LE';
     elseif ($first2 == UTF16_BIG_ENDIAN_BOM) return 'UTF-16BE';
     elseif ($first2 == UTF16_LITTLE_ENDIAN_BOM) return 'UTF-16LE';
 }
?>

 

转自:http://www.wenlingnet.com/index.php/125/

分享到:
评论

相关推荐

    PLSQL导出CSV后中文乱码解决办法

    解决PLSQL导出CSV乱码问题的关键在于确保数据导出时的编码与读取或导入时的编码保持一致。通常,Oracle数据库默认使用的是AL32UTF8编码,这是一种支持Unicode字符集的编码方式,能够正确处理包括中文在内的多种语言...

    爬虫csv乱码1

    # 读取CSV文件 data = pd.read_csv('input.csv', encoding='utf-8') # 处理数据... # 写入CSV文件,使用ANSI编码 data.to_csv('output.csv', encoding='ansi') ``` 通过以上方法,你可以确保在Python爬虫中生成的...

    读CSV文件小实例

    以下是一些关于读取CSV文件的关键知识点: 1. **CSV文件结构**:CSV文件以其简单的结构著称,每行数据由逗号分隔的字段组成。这些字段可以是文本、数字或日期等类型。有时,如果字段内包含逗号,则该字段会被引号...

    php 读取或导出到Excel / CSV (附utf8、gbk 编码转换)

    2. PHP内置函数fgetcsv()和文件操作函数在读取CSV时的应用。 3. 字符编码的理解,尤其是UTF-8和GBK之间的转换,以及在PHP中使用iconv()和mb_convert_encoding()函数进行转换。 4. 自定义类库(如`excel_class.php`)...

    读取zip文件,不解压缩直接解析,支持文件名中文,解决内容乱码(还是以支付宝对账单为例)

    为了解决乱码问题,我们需要确保在读取文件内容时使用正确的字符编码。在Python中,这可以通过指定`decode()`函数的编码参数来实现,如`content = content.decode('utf-8')`。在Java中,可以使用`new String(data, ...

    PHP读取文件,解决中文乱码UTF-8的方法分析

    当读取的文件是UTF-8编码且无BOM(Byte Order Mark)时,通常可以直接读取而不会出现乱码。但在某些情况下,如文件编码为GBK或其他非UTF-8格式时,需要进行编码转换。 在描述中提到了一个方法,通过创建流上下文(`...

    bat脚本将csv格式UTF-8批量转ANSI

    在IT行业中,我们经常需要处理各种格式的文件,其中CSV(Comma ...在这个案例中,通过编写和使用批处理脚本,我们可以轻松地将CSV文件从UTF-8批量转换为ANSI编码,从而解决在Excel中打开时可能出现的中文乱码问题。

    全国地区城市csv文件 ecmall ecshop utf8 可直接导入

    它特别指出是utf8版本,这意味着文件遵循的是Unicode编码标准,能够支持多语言环境,避免了因为编码问题导致的乱码情况。如果用户需要GBK编码的版本,可以通过特定的软件将UTF8文件转换为GBK编码。 标签中的...

    解决中文乱码问题

    解决中文乱码问题是指在使用C#语言读取txt文件时,遇到中文乱码的问题。这种问题在实际开发中非常常见,特别是在读取txt文件、csv文件或者其他文本文件时。 描述解释 描述中提到的是解决C#中文乱码问题,并将解决...

    对pandas读取中文unicode的csv和添加行标题的方法详解

    总结来说,Pandas库通过`read_csv`函数提供了强大的读取CSV文件的功能,通过`encoding`参数处理中文编码问题,`header`和`names`参数用于控制列标题,而`set_index`或直接创建Series作为行索引则可以帮助我们添加行...

    解决rf中文乱码问题

    1. **测试数据文件**:如果你的测试数据文件(如CSV或Excel)包含了中文字符,你需要确保文件本身的编码是UTF-8,同时在RF读取这些文件时也要指定正确的编码。例如,使用`Resource`关键字导入资源文件时,可以通过`...

    mysql乱码解决方案

    当从CSV或其他文本文件导入数据时,应检查文件的编码格式,并在导入命令中指定正确的编码,如`LOAD DATA INFILE 'file.csv' INTO TABLE table_name CHARACTER SET utf8mb4;`。同样地,在导出数据时也要注意使用正确...

    Python之pandas读写文件乱码的解决方法

    python读写文件有时候会出现  ‘XXX’编码不能打开XXX什么的,用记事本打开...以上这篇Python之pandas读写文件乱码的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。

    计算机软件-商业源码-225 读取文本文件的信息.zip

    这在处理多行数据时非常有用,如读取CSV文件。 9. **文件遍历**:可以使用for循环配合` readline()`或`readlines()`逐行处理文本文件,这是处理文本数据的常见方式。 10. **文件元数据**:除了内容,文件还可能...

    原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】

    首先,创建一个名为`Export.php`的文件,定义一个名为`Export`的类,该类包含一个方法`exportToCsv()`,用于处理CSV文件的生成。以下是对`exportToCsv()`方法的详细解释: 1. **参数解析**: - `$headerList`:...

    解决数据库存取乱码问题

    7. **文件读写**:如果涉及到文件操作,比如读取CSV文件导入数据库,确保文件读取时使用正确的编码,避免乱码。 通过以上步骤,我们可以系统性地排查并解决数据库存取乱码的问题。在实际应用中,还需要根据具体环境...

    Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题

    ### Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题 #### 一、背景介绍 在处理包含非英文字符的数据时,尤其是使用 Python 的 `csv` 模块来操作 CSV 文件时,可能会遇到字符编码问题,导致中文等非英文...

    ecshop商品批量上传乱码读CSV的方式问题

    ECShop默认的CSV读取方式存在缺陷,当商品描述中包含换行符时,文件的读取就会出现错误,导致乱码现象。此外,ECShop支持的编码转换机制仅限于中文GB2312,而不支持Unicode编码,这也是导致乱码的主要原因之一。 ...

    解决Python2.7读写文件中的中文乱码问题

    在默认情况下,Python2.7可能不会正确处理中文字符,这会导致在文件路径、文件名或文件内容中出现乱码。通常情况下,Python2.7的IDE或脚本运行环境采用UTF-8编码,而Windows系统则可能默认使用GBK编码。这种编码方式...

Global site tag (gtag.js) - Google Analytics