linux下,fgetcsv乱码问题

简介: 今日使用fgetcsv()函数导入CSV文件,在本地测试无问题,但传到服务器(linux)上则会出现汉字乱码问题,花了好久时间,在网上找到了解决办法,大概有两种: 1、使用PHP自定义处理.

今日使用fgetcsv()函数导入CSV文件,在本地测试无问题,但传到服务器(linux)上则会出现汉字乱码问题,花了好久时间,在网上找到了解决办法,大概有两种:

 

1、使用PHP自定义处理.csv文件的函数:

// http://www.todo8.com/?m=20090519

/**
 * 对CSV进行处理
 * @param resource handle
 * @param int length
 * @param string delimiter
 * @param string enclosure
 * @return 文件内容或FALSE。
 */
 function __fgetcsv(& $handle, $length = null, $d = ‘,’, $e = ‘”‘) {
     $d = preg_quote($d);
     $e = preg_quote($e);
     $_line = “”;
     $eof=false;
     while ($eof != true) {
         $_line .= (empty ($length) ? fgets($handle) : fgets($handle, $length));
         $itemcnt = preg_match_all(’/’ . $e . ‘/’, $_line, $dummy);
         if ($itemcnt % 2 == 0)
             $eof = true;
     }
     $_csv_line = preg_replace(’/(?: |[ ])?$/’, $d, trim($_line));
     $_csv_pattern = ‘/(’ . $e . ‘[^' . $e . ']*(?:’ . $e . $e . ‘[^' . $e . ']*)*’ . $e . ‘|[^' . $d . ']*)’ . $d . ‘/’;
     preg_match_all($_csv_pattern, $_csv_line, $_csv_matches);
     $_csv_data = $_csv_matches[1];
     for ($_csv_i = 0; $_csv_i < count($_csv_data); $_csv_i++) {
         $_csv_data[$_csv_i] = preg_replace(’/^’ . $e . ‘(.*)’ . $e . ‘$/s’, ‘$1′, $_csv_data[$_csv_i]);
         $_csv_data[$_csv_i] = str_replace($e . $e, $e, $_csv_data[$_csv_i]);
     }
     return empty ($_line) ? false : $_csv_data;
 }

 

2、使用: setlocale 函数设置环境变量。:

// from: http://hi.baidu.com/getpost/blog/item/762132f94889c85f252df2bd.html

设置setlocale(LC_ALL,'zh_CN');

 

做项目涉及到繁体的文档,就整个简体繁体都加上,应该影响不会很大:setlocale(LC_ALL,'zh_HK','zh_TW','zh_CN');

 

 

试了下第2个方法,好似可行,不过现在连不上服务器,所以并没确定

相关文章
|
1月前
|
Linux
SecureCRT连接Linux时乱码问题
本文详细介绍了在使用SecureCRT连接Linux服务器时出现乱码问题的解决方法,包括设置SecureCRT字符编码、检查和配置Linux服务器字符编码、调整终端设置等。通过这些方法,您可以有效解决SecureCRT连接Linux时的乱码问题,确保正常的终端显示和操作。希望本文能帮助您在实际操作中更好地解决类似问题,提高工作效率。
47 17
|
5月前
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
295 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
7月前
|
Linux
linux 删除乱码文件名的文件
【8月更文挑战第26天】当遇到文件名显示为乱码,导致无法正常通过键盘输入文件名进行删除操作时,可以利用鼠标的复制功能配合`rm`命令实现删除。对于文件夹的删除,可使用`rm -rf 目录名`。然而,有时这种方式仍无法删除某些特殊乱码文件,这时可以通过获取文件的i节点号(使用`ls -i`或`ll -i`命令查看)并执行`find -inum [节点号] -delete`来进行删除。这种方法特别适用于处理那些因文件名问题而难以删除的情况。
230 2
|
8月前
|
Linux Windows
Linux文件名称乱码,无法删除
解决文件名称乱码无法选中,删除、复制等问题。
171 0
|
Linux 网络安全
55Linux - 远程连接工具(SSHSecureShellClient乱码问题解决)
55Linux - 远程连接工具(SSHSecureShellClient乱码问题解决)
182 0
|
10月前
|
存储 Shell Linux
Linux(25) 如何解决Linux终端乱码问题
Linux(25) 如何解决Linux终端乱码问题
287 1
|
Linux
Linux中文显示乱码问题解决方法
Linux中文显示乱码问题解决方法
180 0
|
缓存 Linux 数据安全/隐私保护
aspose win/linux WORD转PDF(及其解决乱码方式)
aspose win/linux WORD转PDF(及其解决乱码方式)
1585 1
|
Linux
记录一个解决Arm Linux端U盘挂载时文件名显示乱码、Qt显示乱码的问题
记录一个解决Arm Linux端U盘挂载时文件名显示乱码、Qt显示乱码的问题
407 0
|
Linux
Linux 如何删除乱码的文件
你是否在终端 ls 过,发现很多乱码的文件?我搜索了挺多资料,没有一篇文章能真的解决问题(感觉都是抄来抄去的)。用 SFTP 工具、PHPStorm 全家桶,都删不了……你知道如何删除它们吗?
117 0