设为首页
加为收藏
联系我们
  • 电子商务
  • 软件网络
  • 看天下
  • 营销财经
  • 关闭导航
  • 网络编程
  • 数据库类
  • 关闭导航
  • 网络编程
  • 社交礼仪
  • 数据库类
  • 人文地理
  • 关闭导航
  • 编程工具
  • 电子书籍
  • 关闭导航
  • 生活休闲
  • 演讲讲座
  • 视频教程
  • 经典影视
  • 关闭导航
  • 您的位置: 首页 > 入门教程 > 网络编程 > PHP

    乱码问题探究与总结

    时间: 2008-10-02  信息来源: 博客园  作者: 编辑整理  点击数:

    内容提示:本文将就编程乱码问题做一些探讨并对一些典型问题做一些总结.

            相信很多朋友在写程序的过程中都受到过乱码的骚扰,那么今天我就这个问题来同大家探讨一 下。 
           乱码的问题分为很多种,很多人一见到有乱码就开始骂mysql,其实很多情况下并不是mysql造
    成的。 
          从乱码产生的原因来分析,乱码的产生一般有以下几种情况。

    1、网页编码与程序编码不一致的问题

        所谓的网页编码问题就是指你的html代码中定义的“charset”,例如以下这段代码:

             <head>
            <title>Chat Tutorial Application</title>
           <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
            <meta name="language" content="en" />
            <meta name="author" content="Padraic Brady" />
           <link rel="stylesheet" href="public/styles/chat.css" type="text/css" />
           <script src="public/javascript/scriptaculous/lib/prototype.js"
                  type="text/javascript"></script>
           <script src="public/javascript/scriptaculous/src/scriptaculous.js"
                  type="text/javascript"></script>
            <script src="javascript/chat.js" type="text/javascript"></script>
            </head>

           他设置了浏览器端采用gb2312的字符集,此时如果程序使用的是utf8的编码(就是指以什么样
    的编码来编写的程序,一般在编辑器中设置),那么就会产生乱码。 

           此时的解决方法就是把charset的值改为utf8

    2、代码本身就存在乱码问题

            这种情况是指你的代码本身就存在乱码问题。造成这种情况的原因一般是你以另一种编码格式 修改了你的代码后并做了保存,这样你的程序中就有几种编码形式的代码,那么输出的时候自然就 会有乱码。这类问题相对来说比较容易解决,只要人工找到那段有乱码的代码,然后修改就行了(很 多编辑器可以完成这个工作)。

    3、mysql的问题(此次讨论仅围绕mysql5.0之后的版本展开)

           现在再来看最容易造成乱码,也是最容易让人迷糊的mysql乱码问题。

          要说mysql乱码,得先从mysql的几个参数说起,从mysql5开始,多了几个设置字符集的系统变
    量:

        character_set_client         客户端字符集
        character_set_connection    客户端与服务器端连接采用的字符集
        character_set_results        SELECT查询返回数据的字符集
        character_set_database       数据库采用的字符集

            乱码问题一般是由于以上几个变量设置错误造成的,很多人在请教乱码问题的时候,一般都会 得到一个这样的答案:“你先setnames一下”。

            那么setnames是什么呢?setnames实际上就是同时设置了character_set_client,
    character_set_connection,character_set_results这三个系统变量。

    例如setnames'gbk'等同于:
          set @@character_set_client ='gbk'
          set @@character_set_connection ='gbk'
          set @@character_set_results ='gbk'

     
    Tags: PHP,编程,乱码 责任编辑:aboutstudy
     
      关于我们 友情链接 网站地图 广告服务 联系我们 管理登陆  
      鄂ICP备07014143号  
      Powered by EmpireCMS 5.0  
      Template designed by 直来直往.
      联系信息: QQ 365931563 Email:jiangtian001@sina.com  
      ©CopyRight 2007-2008, SKDE.CN, Inc. All Rights Reserved