`
wsql
  • 浏览: 11786168 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

完美解决PHP中文乱码问题

 
阅读更多

一.首先是PHP网页的编码

  1.php文件本身的编码与网页的编码应匹配

  a.如果欲使用gb2312编码,那么php要输出头:header(“Content-Type: text/html; charset=gb2312"),静态页面添加,所有文件的编码格式为ANSI,可用记事本打开,另存为选择编码为ANSI,覆盖源文件。

  b.如果欲使用utf-8编码,那么php要输出头:header(“Content-Type: text/html; charset=utf-8"),静态页面添加,所有文件的编码格式为utf-8。保存为utf-8可能会有点麻烦,一般utf-8文件开头会有BOM,如果使用 session就会出问题,可用editplus来保存,在editplus中,工具->参数选择->文件->UTF-8签名,选择总是删除,再保存就可以去掉BOM信息了。

  2.php本身不是Unicode的,所有substr之类的函数得改成mb_substr(需要装mbstring扩展);或者用iconv转码。

  二.PHP与Mysql的数据交互

  PHP与数据库的编码应一致

  1.修改mysql配置文件my.ini或my.cnf,mysql最好用utf8编码

  [mysql]

  default-character-set=utf8

  [mysqld]

  default-character-set=utf8

  default-storage-engine=MyISAM

  在[mysqld]下加入:

  default-collation=utf8_bin

  init_connect='SET NAMES utf8'

  2.在需要做数据库操作的php程序前加mysql_query("set names '编码'");,编码和php编码一致,如果php编码是gb2312那mysql编码就是gb2312,如果是utf-8那mysql编码就是 utf8,这样插入或检索数据时就不会出现乱码了

  三.PHP与操作系统相关

  Windows和Linux的编码是不一样的,在Windows环境下,调用PHP的函数时参数如果是utf-8编码会出现错误,比如 move_uploaded_file()、filesize()、readfile()等,这些函数在处理上传、下载时经常会用到,调用时可能会出现下面的错误:

  Warning: move_uploaded_file()[function.move-uploaded-file]:failed to open stream: Invalid argument in ...

  Warning: move_uploaded_file()[function.move-uploaded-file]:Unable to move '' to '' in ...

  Warning: filesize() [function.filesize]: stat failed for ... in ...

  Warning: readfile() [function.readfile]: failed to open stream: Invalid argument in ..

  在Linux环境下用gb2312编码虽然不会出现这些错误,但保存后的文件名出现乱码导致无法读取文件,这时可先将参数转换成操作系统识别的编码,编码转换可用mb_convert_encoding(字符串,新编码,原编码)或iconv(原编码,新编码,字符串),这样处理后保存的文件名就不会出现乱码,也可以正常读取文件,实现中文名称文件的上传、下载。

  其实还有更好的解决方法,彻底与系统脱离,也就不用考虑系统是何编码。可以生成一个只有字母和数字的序列作为文件名,而将原来带有中文的名字保存在数据库中,这样调用move_uploaded_file()就不会出现问题,下载的时候只需将文件名改为原来带有中文的名字。实现下载的代码如下

  header("Pragma: public");

  header("Expires: 0");

  header("Cache-Component: must-revalidate, post-check=0, pre-check=0");

  header("Content-type: $file_type");

  header("Content-Length: $file_size");

  header("Content-Disposition: attachment; filename=/"$file_name/"");

  header("Content-Transfer-Encoding: binary");

  readfile($file_path);

  $file_type是文件的类型,$file_name是原来的名字,$file_path是保存在服务上文件的地址。

分享到:
评论

相关推荐

    完美解决PHP中文乱码

    针对于初学者,php开发中的中文乱码问题解决方案;解决完美PHP中文乱码问题!

    完美解决WAMP乱码问题

    PHP乱码或者mysql乱码,多半是因为没有统一编码,要解决PHP/mysql乱码,只要做到三码合一即可. 所谓三码,是指文件编码,页面编码声明和数据库字符集,要使用相同的编码,如全部为utf-8. 怎么做到三码合一?下面以utf-8为例,...

    php中文乱码.zip

    当php作为后台文件接收参数的时候,用JavaScript弹出一些提示时会出现乱码问题,现在已经完美解决!

    完美解决php 导出excle的.csv格式的数据时乱码问题

    以上这篇完美解决php 导出excle的.csv格式的数据时乱码问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:php实现批量上传数据到数据库(.csv格式)的...

    AJAX中文乱码PHP中完美解决方法

    最近在做一个项目,遇到AJAX中文乱码问题,经过一个下午的努力终于完美解决,现将心得写下来,希望对那些还困绕在这个问题而头痛不已的人们有所帮助。 众所周知,使用AJAX传送和接收中文参数时,如果不在客户端和...

    Linux php 中文乱码的快速解决方法

    在ubuntu下php网页输出乱码,在不涉及数据库编码的情况下: 修改“/etc/php5/apache2/php.ini”将 default_charset = “iso-8859-1” ... 您可能感兴趣的文章:关于Linux操作系统下终端乱码的完美解决方法linux

    sphider完美汉化chris修改中文分词及搜索支持版

    本版本对后台界面进行了汉化,并且对编码及数据库进行了utf8编码统一,完美解决中文乱码问题。 同时应用scws分词系统解决中文分词问题,并修正了中文搜索时不能正确返回信息的bug。 是搜索引擎开发入门的理想之选。

    基于PHP导出Excel的小经验 完美解决乱码问题

    网上发现其实最简单可以这样写,但问题是这种做法中文的编码不可靠..复制代码 代码如下:<?php header(“Content-type:application/vnd.ms-excel”); header(“Content-Disposition:attachment;filename=export_...

    php完全生成pdf解决方案

    php生成pdf的完全解决方案,不使用phplib插件,完全脚本化执行,完美解决中文乱码问题,支持以下功能: 1、完美支持中文,php生成的pdf不会出现乱码 2、把SQL查询结构生成为pdf中的表格 3、pdf页眉页脚支持中文及...

    Sphider丁廷臣搜索完美汉化版源码

    解决Sphider中文乱码问题,可提供中文网页的爬行和收集。sphider 丁廷臣简体中文完美汉化版带蜘蛛搜索引擎程序 v1.3.4是最官方的新版,免费开源,用官方最新发布原版汉化。未更改任何内核文件。 Sphider 是一个完美的...

    php+Ajax(GET&POST)完美实例

    php+Ajax解决了post与get中文乱码的问题 后台页面可以结合mysql使用,以达到相应目的

    美加PHP新闻聚合系统 v4.0 长尾词SEO版.rar

    修订了IE6乱码问题和修改了缺省CSS模板设置(v2.1)。系统需求——PHP即可必须是支持PHP4以上的WEB服务器。需要MySQL 5.0 数据库支持。PHP站长的理想选择。使用方便——解压缩即可解压缩到任意网页目录下就可以使用...

    FusionCharts 3.1破解版,破解工具,中文指南,官方DEMO,官文脚本

    4、收集网上一些FusionCHarts的使用问题,如中文乱码的解决办法; 5、包括了官方的FusionCharts.js脚本文件,拿去即可使用了,呵呵; 6、最新独家修改的官方的DEMO例子,直接可以在本地打开哦。 不了解FusionCharts...

    Kodexplorer可道云 v4.40.zip

    可道云提供了类windows经典用户界面,延续了windows平台的用户界面、操作逻辑和使用习惯,支持100余种文件格式的在线预览,解决了文件在线存储与管理、共享和跨平台访问、在线办公影音娱乐等一系列问题,使得用户的...

    NewvBB Core 1.0 Final (vBulletin 简体中文化插件版)

    中文搜索完美解决 3.2 版本(可以在改进的二元分割算法(效率高、负载小)和直接搜索 post 表(更准确、数据库空间占用小)两种方式选择)5. 金钱银行插件 2.06. 隐藏帖插件 3.07. 收费附件插件 2.08. 画廊插件 ...

Global site tag (gtag.js) - Google Analytics