php处理csv乱码问题
来源:互联网 发布:男生宿舍捅死同学知乎 编辑:程序博客网 时间:2024/06/05 17:37
csv是comma separter value的缩写,其档案类型是「逗号分格」,用来存储一些地址薄不错,依计算机原来的设定,如果直接点选该档案,计算机将以EXCEL的模式开启该档案.但这样做的后果是出现中文乱码,因为csv档如果以EXCEL开启,由于计算机档案数据转换的原因,会将其CRC之数值改做科学记号方式储存,而造成档案中的 CRC值发生错误.后果很严重...不过你可以用记事本或者用word来打开它,这样打开是没有乱码的,但那些排版就乱七八糟了...看得很不爽...
究其根本,就是csv不能打开utf-8编码的文档,而记事本和word则可以...
而用PHP来编写支持多国语言网页的时候,数据交换时用utf-8会很方便,但这样一来就跟cvs冲突了
先参考一个从网上找来的例子:
<?php
$T_text = '要输出的CSV文件';
header('Cache-control: private');
header('Content-Disposition: attachment; filename=test.csv');
//如果mb_convert_encoding函数存在则用此函数来转编码,前提是需要安装mbstring包
if(function_exists('mb_convert_encoding')){
header('Content-type: text/csv; charset=UTF-16LE');
echo(chr(255).chr(254));
echo(mb_convert_encoding($T_text,"UTF-16LE","UTF-8"));
}
//如果iconv函数存在则用此函数来转编码
elseif(function_exists('iconv')){
header('Content-type: text/csv');
echo(chr(255).chr(254));
echo(iconv("UTF-8","UTF-16LE",$T_text));
}
//直接从utf-8转,这个貌似不灵...
else{
header('Content-type: text/csv; charset=UTF-8');
echo(chr(239).chr(187).chr(191));
echo($T_text);
}
?>
例子上完了,但这样并不会将我的网页转换乱码成功,为什么我不知道,但我从中得到了启发
下面来两个函数,expChangeCode是导出时将utf-8格式编码转换成cp936,cp936是gbk的另一种说法.而impChangeCode则是导入时将cp936格式编码转换成utf-8,而上面例子上的chr(255).chr(254)则是给文档加一个bom(貌似微软文档专用,靠..)在下面两个函数中则不使用了,因为加上会造成中文字体消失.我也就是因为这个东东搞到半死...
function expChangeCode($str)
{
$str = mb_convert_encoding($str,"CP936","UTF-8");
return $str;
}
function impChangeCode($str)
{
$str = mb_convert_encoding($str,"UTF-8","CP936");
return $str;
}
用的时候也很简单,只要echo expChangeCode($str)就可以将没有乱码的csv格式的文档输出来了,输入因为程序不同,自己去用例子测试了...
- php处理csv乱码问题
- PHP输出CSV文件出现乱码问题
- 解决php导出csv文件打开乱码的问题
- php导出CSV文件乱码或无内容的问题
- php导出CSV文件和解决乱码问题
- php 处理csv文件
- PHP 导出CSV 含韩文乱码
- php 导出csv中文乱码
- php tidy处理中文乱码问题
- python写入csv乱码问题
- csv导入mysql乱码问题
- navicat导出csv乱码问题
- php 处理CSV---中文异常
- php 处理Excel 文件csv
- PHP----CSV文件处理类
- csv文件导出,excel打开乱码处理
- csv文件出力,excel打开乱码处理
- 解决PHP生成UTF-8编码的CSV文件用Excel打开乱码的问题
- Asp.Net:数据添加、修改的便捷方法
- Business Rule Define tool
- 树形控件--浏览文件夹
- 个人学习杂记
- 单例模式
- php处理csv乱码问题
- 空格变成问号的怪问题
- Linux的mount命令详解 一
- VBS 获取当前所在时区信息
- PV3D获得二维坐标
- csv的http头
- (2010-08-24)Asp.net请求处理框架
- ORACLE 锁机制
- Oracle 的随机数、随机日期和时间、随机字符串