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

linux下php插入韩文txt文件内的数据,插入进去的内容部分丢失

程序员文章站 2024-01-29 12:36:58
...
请各位大侠帮忙!!!我利用php程序插入韩文txt文档,本地计算机win7可以插入后正常,并打印正常数组。但是搬移到linux服务器上后,再次运行导入同样的程序来导入同样的txt文件,插入进去的内容,部分韩文的文字会丢失,打印的插入sql和数组也不正常,不会显示丢失的内容已经不在打印的sql语句和数组显示了。
是服务器的编码格式跟我本地计算机不一样吗?



以上问题,在本地计算机都没有出现这个问题,linux服务器就出出现这个问题。


回复讨论(解决方案)

最容易想到的问题就是 BOM 头

但是我用的utf-8的格式呀,不用设置BOM头的吧? 那我该如何解决呢?非常感谢

所有的文字处理软件在存储非 ANSI 编码的内容时都会附加上相应字符集的BOM头
BOM头的作用是在不同系统中,使文件的内容得到正确的解释

mysql 不是文字处理软件,他有良好的字符集识别功能,因此他不需要 BOM 头的帮助。相反 BOM 会给 mysql 带来困扰。因为 BOM 头不会出现在任何字符集中(不然就被当做文字识别了),mysql 不知道该如何处理它
通常是删去不认识的编码组合,结果是可能多删或少删了,造成文字不完整,甚至乱码

我觉得应该是数据库字符集的问题(这个我不熟悉),毕竟两台机器就是两个数据库,设置可能不同

bom头问题,如果上传(或复制)的软件没有设置,一般不会额外添加或删除
用字节方式传这个txt,然后程序考虑换行的问题(win是\r\n,linux是\n)
先读入echo一下文本看看是否读入就有问题,然后再考虑数据方面的

唉,延时严重,回复完刷新才看到图,贴几行win7和linux的数据对比来看看

我导入的的txt韩文文档我是存为euckr的格式的。我把格式换成ANSI的格式后,导入的内容是没有减少了,但是所有韩文的文字都是显示的问号。

ANSI 只能在相同的操作系统中使用

如果有可能,你传一个文本到公网上,我们看一下
可以传到:
你的公网网站中,并给出链接
你的 CSDN 网盘中,并分享出来
CSDN 的下载频道(注意不要有下载分),并给出链接

我上传到网盘,还要通过审核,不知道要等多久才可以提供链接给你。
要不你给我一个邮箱地址吧,我发你邮箱。

我觉得应该是数据库字符集的问题(这个我不熟悉),毕竟两台机器就是两个数据库,设置可能不同

bom头问题,如果上传(或复制)的软件没有设置,一般不会额外添加或删除
用字节方式传这个txt,然后程序考虑换行的问题(win是\r\n,linux是\n)
先读入echo一下文本看看是否读入就有问题,然后再考虑数据方面的


插入打印的SQL和数组也是不正常的。 丢失的部分也没有打印出来。