=======先介绍下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'; } ?>
相关推荐
本文实例讲述了php使用fgetcsv读取csv文件出现乱码的解决方法。分享给大家供大家参考。具体分析如下: 一般来说在php中碰到乱码多半是编码问题,在这里我们实例分析了fgetcsv读取csv文件乱码原因所在与解决方法。 ...
在我们需求中需要读取一个csv文件的数据,但是只有旧的csv的几列数据再新写入一个csv文件,而且在旧的数据有空的数据,需要判断旧的csv的空值。可能写的存在不完善!但是应用的需求里面还是能用的
NULL 博文链接:https://thinktothings.iteye.com/blog/1536044
java 解析csv文件例子,csv文件 中文乱码问题
读取Excel格式CSV格式文件
参考大神文档,在这个基础上修改处的可以直接调用读取CSV文件的接口;很方便可以直接调用读取;函数都封装的很好,也有很详细的注释
环境:eclipse3.7.2 jre1.6
matlab读取csv文件例程,读取指定路径下的所有csv文件
主要介绍了Java避免UTF-8的csv文件打开中文出现乱码的方法,结合实例形式分析了java操作csv文件时使用utf-16le编码与utf8编码相关操作技巧,需要的朋友可以参考下
Matlab读取CSV文件
codesys通过文件读取功能块是实现对CSV文件数据的读取, a、通过SysFileOpen指令打开文件; b、通过SysFileGetSizeByHandle获取文件字符序列大小; c、通过SysFileRead读取一次读取字符序列,并按顺序依次存入预先设...
主要介绍了js读取csv文件并使用json显示出来,需要的朋友可以参考下
导入csv ,亲测可用 $file = $_FILES; $excel_file_path = $file['file']['tmp_name']; // 上传文件本地路径 if (substr(strrchr($file['file']['name'], '.'), 1) !== 'csv') { exit('请上传 CSV 格式的文件!')...
STM32实现SD卡的fatfs文件系统,写数据生成.csv文件,可以通过网络工具通过以太网下发数据通信。
csv是Comma-Separated Values的缩写,是用文本文件形式储存的表格数据,比如如下的表格 ...第一种方法使用reader函数,接收一个可迭代的对象(比如csv文件),能返回一个生成器,就可以从其中解析出csv的
通过ABAP程序去读取FTP服务器的CSV文件
在fpga数据处理时往往要对ila的输出的大量csv文件进行分析,而手动一个一个文件的导入处理太过麻烦。因而笔者编写了一段matlab代码可以对csv文件进行批量处理。 ilapro.m文件即为批量读取和处理所用,csvloadpro.m为...
C# readEXCEL-Csharp 读取Excel2003/2007文件(.xls/.xlsx)中的行列数据;并且输出CSV文件
fortran读写CSV文件模块声明:type(csv_file)::f写文件 初始化 f%initialize() 打开文件 f%open() 关闭文件 f%close() 增加数据 f%add() 换行 f%next_row()读文件 f%read() 读取数据 f%get() 获取数据总行数 f%get_n...