免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3783 | 回复: 6
打印 上一主题 下一主题

mysql中存放的word文件取出时乱码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-18 10:48 |只看该作者 |倒序浏览
问题是下载下来的word文件内容是乱码.
数据库中
create table fileword (
filewordid int(10) unsigned not null auto_increment primary key,
filename char(60) binary not null,
filedata longblob not null
);

数据已经存进去了,通过
header("Content-type:application/msword");
    header("Content-Disposition: attachment; filename=$filename");
echo $file;
下载word文件,测试了一下如果上传的是txt文本文件(用记事本输入的)的话下载后可以正常显示,没有乱码,但如果上传的是word格式的doc文件时,下载后显示的却是乱码.

使用word格式的doc文件保存后,里面不单单是中文的文本内容了,不知道是不是因为这个原因导致编码问题而造成的?应该用什么步骤去尝试解决呢?

数据库中其他char的普通的中文数据在显示和like中,都非常准确,没有问题

以下是数据库中编码的设置
mysql> show varibiables like 'character';

+--------------------------+---------------------------------------+
| Variable_name            | Value                                 |
+--------------------------+---------------------------------------+
| character_set_client     | latin1                                |
| character_set_connection | latin1                                |
| character_set_database   | latin1                                |
| character_set_filesystem | binary                                |
| character_set_results    | latin1                                |
| character_set_server     | latin1                                |
| character_set_system     | utf8                                  |
| character_sets_dir       | E:\APM-Express\mysql5\share\charsets\ |
+--------------------------+---------------------------------------+


mysql> show variables like '%collation%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database   | latin1_swedish_ci |
| collation_server     | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)

各位有经验的帮忙想想办法

论坛徽章:
0
2 [报告]
发表于 2007-10-18 14:03 |只看该作者
改了程序,又试了一下图片,也不行.
word文件和图片不管直接在mysql里load_file输入数据库还是用网页上传进数据库,虽然下载下来的大小都对,但是word乱码,图片无法打开,提示格式不对.

论坛徽章:
0
3 [报告]
发表于 2007-10-18 20:05 |只看该作者
在家里的机子上又测试了一下,没有问题,明天再到公司里试下,到底怎么回事

论坛徽章:
0
4 [报告]
发表于 2007-10-19 10:02 |只看该作者
经过多番尝试,终于搞清楚原因了.
把下载下来的文件用十六进制编辑器打开和原来文件作了一下对比,并非编码的问题,各位请看:
D0 CF 11 E0 A1 B1 1A E1 这是完好的word文件的前几个字节,应该是用来标别word文档的标志的.
从数据库中出来,然后通过网页下载下来的word文件的头部是:
0D 0A D0 CF 11 E0 A1 B1 1A E1

多了0D 0A,而0D 0A是windows下换行的处理方式,想到我的download.php其中有require文件,然后查了一下这些文件,发现未尾多了二行,去掉之后,然后再下载,就可以正常打开了,昨天在家里没有问题也是因为测试时没有调用其它文件,直接写代码了.

后来又改mysql的编码设置试试,发现并不会影响到,以后写调用的文件决不在前后多加空行.

论坛徽章:
0
5 [报告]
发表于 2007-10-21 14:12 |只看该作者
多谢,长见识了

论坛徽章:
0
6 [报告]
发表于 2007-10-23 10:59 |只看该作者
想问问,目前把word文档或者图片等直接以二进制形式存入数据库的应用多吗?

这样做有哪些优点,我以前看到的应用一般只存放这类文件的存放路径,而文件本身
只放在文件系统中的某些目录下。

论坛徽章:
0
7 [报告]
发表于 2007-10-23 13:19 |只看该作者
优点就是比存放在磁盘上安全。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP