php导出csv乱码怎么办
发布网友
发布时间:2023-07-30 16:00
我来回答
共1个回答
热心网友
时间:2023-07-31 23:39
PHP导出CSV文件出现乱码的解决方法
在做项目时碰到使用外语的情况下,我们就会使用UTF-8编码。但是,在用PHP导出CSV文件时,如果写入的数据是使用UTF-8编码的日语、韩语之类的外文,就会出现乱码。
要解决PHP生成CSV文件的乱码问题,只需要在文件的开始输出BOM头,告诉windows CSV文件的编码方式,从而让Excel打开CSV时采用正确的编码。
什么是BOM
在UCS 编码中有一个叫做”ZERO WIDTH NO-BREAK SPACE”的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符”ZERO WIDTH NO-BREAK SPACE”。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此
字符”ZERO WIDTH NO-BREAK SPACE”又被称作BOM。UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符”ZERO WIDTH NO-BREAK SPACE”的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。Windows就是使用BOM来标记文本文件的编码方式的
在所有内容输出之前
print(chr(0xEF).chr(0xBB).chr(0xBF));几个UTF编码的BOM头
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));完整的代码
header('Expires: 0');
header('Cache-control: private');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Description: File Transfer');
header('Content-Encoding: UTF-8');
header('Content-type: text/csv; charset=UTF-8');
header('Content-Disposition: attachment; filename=Customers_Export.csv');
echo "xEFxBBxBF"; // UTF-8 BOM
// print(chr(0xEF).chr(0xBB).chr(0xBF));更多相关知识,请访问PHP中文网!
如何解决php导入csv文件碰到乱码的问题
方法一:函数mb_convert_encoding();作如下设置 $str = mb_convert_encoding($str, "UTF-8", "GBK");然后就可以了。方法二:函数iconv();作如下设置iconv(‘GBK',”UTF-8//TRANSLIT//IGNORE”,$str);
如何解决PHP生成UTF-8编码的CSV文件用Excel打开乱码的问题
使用以下函数转码 demo_text = mb_convert_encoding('要转换的中文', 'gb2312', 'UTF-8');echo $demo_text. chr(13);
如何解决PHP生成UTF-8编码的CSV文件用Excel打开乱码的问题
在你要输出的内容前先输出"\xEF\xBB\xBF",例如:你要输出的内容保存在$content里 content = "\xEF\xBB\xBF".$content; //添加BOM 确保输出$content前没有任何其他东西输出。何为BOM,它是Windows用来标记文本文件的编码方式的,你可以在网上查查相关BOM资料。
php从数据库导出csv格式的Excel表格是,字段本身就有逗号怎么办?说在字...
data[$key]=implode("\t",$data[$key]);你的程序用这个语句把一行数组转换为TAB分割的字符串,这样EXCEL是可以打开的,只是不完全符合CSV的规则(逗号分开),要改为逗号分开,而且每个字段要用引号,该语句修改为下面这样既可:data[$key]='"' . implode('","',$data[$key]) . '"';...
php导入CSV到MYSQL遇到特殊字符的问题。
php //导入CSV表格:CSV转数组 $fp = fopen($_FILES['myfile']['tmp_name'], 'r'); while ( ($row = fgetcsv($fp)) !== FALSE ) { //从文件指针中读入一行并解析CSV $arr[] = $row; } fclose($fp); //开启事务,循环插入 $link = mysqli_connect("127.0.0.1", "...
php导入csv文件乱码问题怎么解决
网上好多解决方法啊 http://blog.csdn.net/phpfenghuo/article/details/17483261
php fputcsv 写入csv文件之前使用iconv将utf-8字符集转换为unicode,打开...
你需要确定转换编码前的字符编码,如果不是utf-8也会出现乱码
php中导出CSV时怎么改变字体大小
php导出excel可以设置字体,但是csv作为文本,是不能设置格式的
php导出csv文件大小怎么去除限制
php导出csv文件大小无法去除限制,但是可以通过以下方法达到目的,用到的工具:notepad++,步骤如下:找到php.ini配置文件,需要修改以下三处参数:post_max_size = 200M //按需调整upload_max_filesize = 200M //按需调整max_file_uploads = 200 //按需调整2.修改完成以后重启php环境(IIS,apache...
php服务器上导入csv文件的问题
上传的 csv 应该保存成 utf-8 格式的,如果你没有其他编辑工具,可以另存完了之后,用记事本打开 csv 文件,在另存为对话框编码那里选择 utf-8 ,保存,然后再上传。