Linux fgetcsv取得的数组元素为空字符串的解决方法

但服务器上,很多使用Linux服务器,源程序使用UTF-8,这样很容易产生字符编码的问题.

如果仅仅将CSV文件转码为UTF-8,这样在Windows服务器上没有问题,

而在RedHat5.5上,用fgetcsv取得的数组中,如果某列的内容是中文,则该列对应的数组元素为空字符串,而英文则正常.

这时,需要设置区域:

setlocale(LC_ALL, 'zh_CN.UTF-8');
代码如下


代码如下:

// 上传的CSV文件,通常是用Excel编辑的GBK编码,
// 而源代码是UTF-8,需要进行转码处理
file_put_contents($new_file, iconv('GBK', 'UTF-8', file_get_contents($new_file)));

//ini_set('auto_detect_line_endings', true);
// 设置区域:简体中文,UTF-8编码
setlocale(LC_ALL, 'zh_CN.UTF-8');
// 打开CSV文件
$handle = fopen($new_file, 'r');
// 取出列头
$data_heads = fgetcsv($handle);

(0)

相关推荐

  • 利用PHP脚本在Linux下用md5函数加密字符串的方法

    #touch a.php //创建a.php文件 #vi a.php //用vi 编辑a.php文件 将<?php echo md5(123456); ?>输入进去后保存 #php a.php //运行a.php文件 显示:e10adc3949ba59abbe56e057f20f883e A.在linux或Unix上,md5sum是用来计算和校验文件报文摘要的工具程序.一般来说,安装了Linux后,就会有md5sum这个工具,直接在命令行终端直接运行.可以用下面的命令来获取md5sum命令帮助

  • Linux shell脚本中字符串连接的方法

    如果想要在变量后面添加一个字符,可以用一下方法: 复制代码 代码如下: $value1=home$value2=${value1}"="echo $value2 把要添加的字符串变量添加{},并且需要把$放到外面.这样输出的结果是:home=,也就是说连接成功. 又如: 复制代码 代码如下: [root@localhost sh]# var1=/etc/[root@localhost sh]# var2=yum.repos.d/[root@localhost sh]# var3=${v

  • linux shell 字符串操作(长度,查找,替换)详解

    在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系列操作符号,可以达到类似效果,大家知道,使用内部操作符会省略启动外部程序等时间,因此速度会非常的快. 一.判断读取字符串值 表达式 含义 ${var} 变量var的值, 与$var相同     ${var-DEFAULT} 如果var没有被声明, 那么就以$DEFAULT作为其值 * ${var:-DEFAULT} 如果var没有被声明, 或者其值为空, 那

  • linux bash字符串处理大全

    取得字符串的长度 复制代码 代码如下: 代码:%x="abcd"#方法一%expr length $x4# 方法二%echo ${#x}4# 方法三%expr "$x" : ".*"4# expr 的帮助# STRING : REGEXP   anchored pattern match of REGEXP in STRING 查找子串 复制代码 代码如下: 代码:%expr index  $x "b"2%expr index

  • Linux C字符串替换函数实例详解

    Linux C字符串替换函数实例详解 最近学习linux 的基础编程知识,字符串替换函数,在网上找下资料,觉得这篇文章写的不错,记录下来,和大家分享一下: 实例代码: #include <stdio.h> #include <string.h> #include <stdlib.h> /** * * @author: cnscn@163.com * @reference: lovesnow1314@http://community.csdn.net/Expert/Top

  • linux shell字符串内置的常用操作(获取长度、查找、替换)

    之前我们也发过相关的文章.这里呢,推荐大家使用一些内置的函数. 在编写shell程序时,经常会涉及到字符串相关操作.有许多命令语句,如awk,sed都能够做字符串各种操作. 事实上shell内置一系列操作符号,能够达到相似效果,使用内部操作符会省略启动外部程序等时间,因此速度会很的快.如果内置的操作符能够做到的,优先使用内置的. 1 读取字符串值 表达式 含义 ${var} 变量var本来的值 ${var-default} var没声明返回default,但不改变var的值 ${var:-def

  • Linux fgetcsv取得的数组元素为空字符串的解决方法

    但服务器上,很多使用Linux服务器,源程序使用UTF-8,这样很容易产生字符编码的问题. 如果仅仅将CSV文件转码为UTF-8,这样在Windows服务器上没有问题, 而在RedHat5.5上,用fgetcsv取得的数组中,如果某列的内容是中文,则该列对应的数组元素为空字符串,而英文则正常. 这时,需要设置区域: setlocale(LC_ALL, 'zh_CN.UTF-8'); 代码如下 复制代码 代码如下: // 上传的CSV文件,通常是用Excel编辑的GBK编码, // 而源代码是UT

  • C语言数组元素循环右移问题及解决方法

    C 语言是一种通用的.面向过程式的计算机程序设计语言.1972 年,为了移植与开发 UNIX 操作系统,丹尼斯·里奇在贝尔电话实验室设计开发了 C 语言. C 语言是一种广泛使用的计算机语言,它与 Java 编程语言一样普及,二者在现代软件程序员之间都得到广泛使用. 题目内容: 解题思路 方法一: 这是我自己摸索出来的一种方法,通过对数组的多次逆置来达到循环的效果,一共对数组进行了三次逆置,所以就需要构造一个函数, 这个函数既可以逆置一个数组,也可以逆置数组的部分区间. 1,先将整个数组[0,N

  • 详解MyBatis-Plus updateById方法更新不了空字符串/null解决方法

    最近遇到了Mybatis-Plus updateById(),更新某一个字段为null,却发现没有更新成功,发现有一个博客记录挺好的.转载过来,方便自己看. 一.简介 因为最近在忙项目,好久都没有更新博客,最近在项目中刚好遇到一个问题,就是在使用MyBatis-Plus updateById(xxx)的时候,居然更新不了字符串或者null,本文分享两种解决方案,具体大家可以根据自己的需求选择一种方法解决. 二.原理 在实际项目中,难免更新的时候,有可能会把已有的值更新成空字符串或者null,但是

  • js实现以最简单的方式将数组元素添加到对象中的方法

    如下所示: //如题,通常做法就是循环数组,最后在添加length属性,如: var obj = {}; var pushArr = [11,22,33,44,55,66]; for(var i=0;i<pushArr.length;i++) { obj[i] = pushArr[i]; } obj.length = pushArr.length; console.log(obj); //{0:11,1:22,2:33,3:44,4:55,5:66,length:6} 简单方法: //js将数组

  • Linux下Tomcat启动正常,但浏览器无法访问的解决方法

    1.服务器可ping通 2.服务器抓本地的http请求包,可以抓到 3.本地抓服务器返回的http响应包,抓不到 经过查找,是由于开启了Linux防火墙 查看防火墙配置(需要root权限) [root@localhost ~]# service iptables status Redirecting to /bin/systemctl status  iptables.service iptables.service - IPv4 firewall with iptables Loaded: l

  • linux下因为系统编码问题造成乱码的快速解决方法

    最近一段时间遇到一些润乾的应用在linux系统下面乱码的问题,最后检查后都发现是客户的linux系统默认编码设置的不正确造成的,这种原因造成乱码的现象一般都是程序里面写死了的中文字符能正常展现,但是从数据库中取出来的或者从程序中读出来的中文字符就会出现乱码. 下面就介绍一下由于linux系统编码设置不正确造成润乾报表应用乱码问题的解决办法. 第一步:检查linux的系统编码. 检查linux的系统编码,确定系统是否支持中文.在linux系统的终端中输入命令:locale,就会看到打印出的系统编码

  • linux系统重装导致免密码key登录失败的解决方法

    在一台linux机器上ssh远程另外一台linux服务器时候出现: [root@server .ssh]# ssh 192.0.50.80 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

  • 新装linux系统/etc/sysconfig目录下无iptables文件的解决方法

    今天新装了Linux,希望去做些防火墙的策略,使用service iptables status查看防火墙的状态时,无任何反应,且使用service iptables start也启动不聊.后来发现在/etc/sysconfig目录下没有iptables文件(防火墙的策略一般都写在此文件中). 原因:在新安装的Linux系统中,防火墙默认是被禁掉的,一般也没有配置过任何防火墙的策略,所有不存在/etc/sysconfig/iptables文件. 解决方法: 在控制台使用iptables命令随便写

  • 同一个文件在windows和linux下计算md5哈希不一致的原因及解决方法

    最近项目需要,需要对客户传过来的文件进行MD5校验,在实现的过程中前前后后遇到了若干问题,在这里总结一下. md5的计算采用openssl实现,具体代码网上很多,这里不再赘述.需要注意的问题 1 读取文件内容时,文件打开方式要用二进制方式(rb),因为用户文件有可能是linux格式,如果用文本方式打开,可能会改变原始的内容,造成计算不准. 2 结果检验.windows可以随便下载一个md5计算工具,网上很多,我用的是HashMyFiles.linux下面,md5sum 文件名 即可. 还有一个隐

  • Linux CentOS 6.5 ifconfig查询不到ip的解决方法

    最近有小伙伴表示在虚拟机中安装CentOS之后使用ifconfig以及ip addr指令无法查询到ip地址, 在此笔者提供一个简单有效的方法; 1. 切换为root用户登录 su root 2.进入配置查找相关文件的文件夹内, 找到ifcfg-eth0文件 cd /etc/sysconfig/network-scripts 3.修改该文件, 将ONBOOT=no更改为ONBOOT=yes vi ifcfg-eth0 4.保存退出 :wq 5.查询ip ifconfig 总结 以上所述是小编给大家

随机推荐