请大家帮忙解决一下,PHP如何判断上传的CSV文件的编码

lizhongbin 2007-06-28 10:33:39
问题概述:
开发环境:PHP+Apache+Mysql + Windows2003

由于网站扩展,现在需要支持多种语言的版本,如中文,英文,日文

现有一个功能是上传CSV文件并将其内容导入数据库中,数据库编码UTF-8,导入过程中需要转码,否则乱码

目前的问题就是:
客户有可能使用中文系统或日文系统或英文系统,那么CSV文件的编码可能是多种的(如GB2312,shift-jis),我需要先判断CSV文件的编码,再进行转码,在网上找了一段时间,没找到什么合适的方法判断,所以请大家帮帮忙,给点思路,有代码最好

备注:
如果有别的解决方案,也可以提一下
...全文
1139 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
peterkingdom2009 2010-08-10
  • 打赏
  • 举报
回复
我也遇到了
zh_heng 2009-03-10
  • 打赏
  • 举报
回复
楼主如何解决的啊 能不能发来看看
zh_heng 2009-03-09
  • 打赏
  • 举报
回复
狂顶。。。我也遇到这个问题了
iceflame1986 2008-06-27
  • 打赏
  • 举报
回复
我也遇到了同样的问题 我是用php转EXCEL表 用excel_class的类解决了部分问题 但是遇到个别用户传上来的EXCEL表还是乱码 请问EXCEL表除了UTF-16LE以外还有几种编码啊
lizhongbin 2007-06-30
  • 打赏
  • 举报
回复
哎,,,再顶起来。。。。。。
lizhongbin 2007-06-29
  • 打赏
  • 举报
回复
再顶起来。。。
lizhongbin 2007-06-28
  • 打赏
  • 举报
回复
再次谢谢 helloyou0(你好!) 的热心帮助

我的CSV是excel模板通过VBA生成的,有固定格式,第一种方法可行

我先试试第三种

请楼下的继续讨论讨论

自己在顶一下。。。。。。

helloyou0 2007-06-28
  • 打赏
  • 举报
回复
不知道你的csv的文件的来源,如果是任何来源(即用户可以上传任何他制作的csv文件的话)就比较麻烦。

如果你的csv是有一定格式和要求的,比如是你制作的模板,他们只是填入数据,那么你可以在文件里加上标识
或者
如果你的网页是分编码的,那来自gbk网页的默认gbk编码,....etc.
或者
或者根据$_SERVER里用户语言来判断

上面这些方法再结合mb_detect_encoding, 看看效果如何
lizhongbin 2007-06-28
  • 打赏
  • 举报
回复
谢谢楼上两位的解答


To : jiangsheng(蒋晟.Net[MVP])

Encode::Guess 这个好像是perl里面的吧,我只能用PHP实现


To : helloyou0(你好!)
听你这么一说,似乎明白了一点,我试了php扩展库里面的mb_detect_encoding这个函数,但是判断的准确性实在是不尽人意,尤其是在中文和日文的判断上,有没有什么方法可以猜的准确一些?
helloyou0 2007-06-28
  • 打赏
  • 举报
回复
严格来说,编码只能猜,不能严格判断

比如 一个字符第一位是156, 第二位是177
那么在gbk里它表示中文 湵
在shift-jis里表示 愕

但是如果光给你 156,177, 不说编码, 你是无法判断它是哪个的,

所以只能根据这些编码的范围,大概猜了

蒋晟 2007-06-28
  • 打赏
  • 举报
回复
Encode::Guess
lizhongbin 2007-06-28
  • 打赏
  • 举报
回复
沙发,,,自己先顶一下
lizhongbin 2007-06-28
  • 打赏
  • 举报
回复
顶起来。。。
懒得去死 2007-06-28
  • 打赏
  • 举报
回复
没碰到过这种问题,你可以吧所有的编码列到一个数组中,然后通过遍历数组来循环CSV文件的第一行内容就行 。
内容概要:本文围绕基于NSGA-2算法的电-热-气综合需求响应(IDR)在综合能源系统中的多目标优化问题展开研究,提出了一种融合智能优化算法与能源系统协同调度的解决方案。研究系统性地构建了包含电力、热力与天然气多能耦合的综合能源系统模型,设计了以能效提升、运行成本降低和环境效益优化为目标的多目标优化框架,并采用NSGA-2算法求解该复杂非线性优化问题,获得Pareto最优解集。文中详细阐述了IDR机制建模方法、多目标优化问题的数学建模过程以及NSGA-2算法的关键实现步骤,包括编码方式、交叉变异策略与非支配排序机制,并通过Matlab代码实现了完整的仿真验证流程,展示了该方法在平衡多个冲突目标方面的优越性能。; 适合人群:具备电力系统、能源系统建模或优化算法基础的研究生、科研人员及工程技术人员,特别适用于从事综合能源系统规划、需求响应策略设计、多目标进化算法应用等相关领域的研究人员; 使用场景及目标:①应用于综合能源系统的运行优化与规划决策,支持多能互补场景下的协同调度分析;②为科研工作者提供NSGA-2算法在能源系统中实际应用的完整Matlab代码实现范例,助力学术论文复现、算法改进与模型拓展; 阅读建议:建议读者结合文中提供的Matlab代码,按照系统建模、目标函数设计、约束处理到算法实现的研究脉络逐步学习,重点关注Pareto前沿的生成过程、多目标权衡分析及算法参数敏感性,以深入掌握多目标进化算法在复杂能源系统优化中的工程化应用方法。

21,889

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧