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

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

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

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

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

备注:
如果有别的解决方案,也可以提一下
...全文
1017 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文件的第一行内容就行 。

21,886

社区成员

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

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