当前位置:Gxlcms > PHP教程 > 关于mysql编码的问题

关于mysql编码的问题

时间:2021-07-01 10:21:17 帮助过:24人阅读

我们现在每天从日本网站上下载一个订单txt文件,然后通过PHP导入到数据库,现在每次都要先用记事本把txt转成utf-8之后导入才不会是乱码,直接导入就是乱码,请问怎么可以不用每次用记事本转码,用PHP转码就行了???

以下为一些信息供大大们帮忙分析
server characterset latin1
Db characterset latin1
Client chatacterset latin1
Conn. chatacterset latin1



character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_filesystem latin1
character_set_results latin1
character_set_server latin1
character_set_system latin1
character_sets_dir latin1

以下为部分代码
mysql_query("set names utf-8");$ship_address3=mb_convert_encoding(addslashes($u[19]), 'UTF-8','auto');


回复讨论(解决方案)

是否转码、如何转码,取决于原始数据
你说“用记事本把txt转成utf-8”,那么当你用记事本打开这个文件的时候能正确显示内容吗?没有乱码?
你使用的是日文操作系统吗?
如有可能,你可贴出数据文件片段以供分析
echo base64_encode(file_get_contents('你的数据文件.txt', false, null, 0, 40));
贴出结果



打开都是看的到的

如果你真的希望我的帮助,那么请按我说的做
贴个图片没有任何意义

输出结果:
b3JkZXItaWQJb3JkZXItaXRlbS1pZAlwdXJjaGFzZS1kYXRlCXBheQ==

关于系统,日文,繁体,简体都有可能,不过主要是日文系统。

请问xuzuning 一般base64_encode()都用在什么地方啊

再次确认一下,你使用的操作系统是什么?请务必回答

按你的描述、图片、数据片段
1、每次都要先用记事本把txt转成utf-8,显然文本不是utf-8的否则不需要转换
2、操作系统是 window 系列的,不然没有“记事本”一说
3、数据中没有 BOM 头,就是说使用操作系统默认的字符集保存的
4、从图片上看,日文部分似乎完整,未观察到乱码现象

由此可知
如果操作系统是简体中文的,那么字符集为 gbk
如果操作系统是繁体中文的,那么字符集为 big5
如果操作系统是日文的,那么字符集为 EUC 或 shift-JIS

所以你只要根据,你操作数据文件的操作系统的字符集填写下面语句就可以了
mysql_query("set names 字符集");
转码的工作将会由 mysql 自动完成

xuzuning大大:您好!

回答:我们是从日本amazon网站下载的,操作者的系统一般是繁体和日文,如果不能实现多系统,那以日文系统为准,我们可以要求操作者全用日文系统。

1.记事本显示的是ansi编码
2.我访问日文网站的很多都是shift-jis编码


我想问一下,如果我用了EUC或shift-JIS,那我们用简体或繁体的显示会不会有问题呢??

访问日文网站的很多都是shift-jis编码
那么下载的文件就是shift-jis编码的,导入数据库是也用 shift-jis 编码

简体或繁体是中文的概念,与日文无关
当你操作 简体或繁体 的数据来源时,自然也就是 gbk 或 big5 ?

最终存放在数据库中的不都是 utf-8 的吗
不也就同一起来了吗

嗯,谢谢xuzuning大大,我今天试试!

我们的做法是,将download下载的订单,先转化成excel格式,之后通过php读取。

zy205817你好,你们这样做,跟我们用记事本转utf-8都是一样,都要人工转一次码。

xuzuning 大大,我想请问,PHP可不可以对txt文件进行转码呢?就像我们用记事本进行转码一样???

xuzuning 大大:
还有上次我截图日文没有乱码,这个是我同事给我的txt文档,今天我直接从日文网站下载下来,打开日文部分全是乱码,需要用excel进行转码,用记事本直接转uft-8都不行

人气教程排行