欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

关于mysql编码的问题

程序员文章站 2022-04-05 16:46:53
...
我们现在每天从日本网站上下载一个订单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都不行