1:PHP代码文件本身的编码格式,是GB或者UTF8会影响什么?
2:PHP代码文件中是混杂的,有GB又有UTF8会导致什么样的不好结果么?
3:PHP语言中的字符串编码格式是什么?(比如C语言就是ASCII,但C#就是UNICODE,不知道PHP是什么)
4:PHP代码文件的编码格式跟MYSQL的数据库字符编码格式不同会导致什么不好的结果么?
5:MYSQL本身的编码格式会影响输出到页面上的文字的效果么?问题好像有点多了,请大家指教,非常感谢.一定及时结帖给分.

解决方案 »

  1.   

    1:PHP代码文件本身的编码格式,是GB或者UTF8会影响什么?
    只要与 html 语言声明不冲突,就没有关系2:PHP代码文件中是混杂的,有GB又有UTF8会导致什么样的不好结果么?
    多半会差生“乱码”,而使你无所适从3:PHP语言中的字符串编码格式是什么?(比如C语言就是ASCII,但C#就是UNICODE,不知道PHP是什么)
    由你决定4:PHP代码文件的编码格式跟MYSQL的数据库字符编码格式不同会导致什么不好的结果么?
    只要通知 mysql 需要什么编码的内容,没有不好的结果5:MYSQL本身的编码格式会影响输出到页面上的文字的效果么?
    不会
      

  2.   

    本帖最后由 PhpNewnew 于 2012-07-24 19:26:51 编辑
      

  3.   

    呵呵,楼上的解释真油菜~其实现实情况是这样的,我的一个PHP项目,使用的是CI框架,它的代码本身是ANSI编码的,然后我们的项目里面又调用了新浪的开放平台接口,它提供的接口代码又是UTF-8的,这该如何是好?难道手动统一一遍?请大神们救命~谢谢
      

  4.   

    程序文件用什么编码无所谓,只要兼容ASCII就行。关键是数据库存储用UTF-8就行
      

  5.   

    首先文件本身的编码格式要指定,并且项目中要统一。其次就是参数编码也要指定统一,否则中文会乱码。与mysql的编码不一致,要么设置mysql数据库的编码集要么用php转码函数转码,否则中文乱码
      

  6.   

    大神来了。(- -#)
    源代码中的字面常量字符串的编码直接受源代码文件编码控制,举例:$str = "你好吗";1,如果是GBK编码保存的这三个汉字,那么硬盘上实际占用了6个字节。
    2,如果是UTF8编码保存的这三个汉字,那么硬盘上实际占用了超过6个字节。假如文件是UTF8保存的,那么你希望转化这个字符串为GBK的,并发给浏览器。那么mb_convert_encoding($str, "utf8", "gbk")就会得到一个gbk编码的“你好吗”,而你这个函数的调用的效果就是告诉PHP解释器:这个字符串里的字节是UTF8编码的,你得按照UTF8编码解释这一段字节,并将这三个字符转化成GBK编码的6个字节。 之后echo输出到浏览器,并content type告诉浏览器这一段字节是gbk的,请按照gbk编码去解释这6个字节。
      

  7.   

    大神来了。(- -#)
    源代码中的字面常量字符串的编码直接受源代码文件编码控制,举例:$str = "你好吗";1,如果是GBK编码保存的这三个汉字,那么硬盘上实际占用了6个字节。
    2,如果是UTF8编码保存的这三个汉字,那么硬盘上实际占用了超过6个字节。假如文件是UTF8保存的,那么你希望转化这个字符串为GBK的,并发给浏览器。那么mb_convert_encoding($str, "utf8", "gbk")就会得到一个gbk编码的“你好吗”,而你这个函数的调用的效果就是告诉PHP解释器:这个字符串里的字节是UTF8编码的,你得按照UTF8编码解释这一段字节,并将这三个字符转化成GBK编码的6个字节。 之后echo输出到浏览器,并content type告诉浏览器这一段字节是gbk的,请按照gbk编码去解释这6个字节。
      

  8.   

    看了你这边说的有点晕....
    CI的代码...如果没有记错,应该都是英文等...
    新浪的开放平台不知道,但是一般情况下,代码也应该都是英文及符号等....对于127以下的ascii字符,包括英文及符号,数字, 他们的ascii码和utf8码是完全一样的....
    所以可能不存在你说的需要统一的问题
      

  9.   

    前面没有讲清楚,非常抱歉,不过经过大家的解释我已经基本清楚该如何处理了.
    可是还是碰到一个问题,就是一个项目中,如果有一部分PHP文件中含了中文字符,比如要echo出一些文本到页面,然后另一个PHP文件中也包含了中文,但这个文件是UTF-8编码的,在输出的时候按前面各位讲的方法可以控制,但是用IDE编辑代码的时候就比较痛苦,比如NetBeans,要指定一个项目的编码格式,如果指定为ANSI,那UTF8那些页面编辑时就显示乱码,如果指定为UTF8那么有ANSI编码的那些文件编辑时就显示为乱码,所以很不方便.今天又试了一下VS.PHP,还没确认是否可能规避这个问题.不知道各位大神们用的是什么IDE ,如果碰到这种问题,一般是怎么处理的?非常感谢...非常感谢
      

  10.   

    怎么处理?改成统一的编码
    当然你也可以给 php 部分请个翻译。php 提供了 mb_string 和 iconv 两个函数组,都可以方便的解决你的问题
      

  11.   

    只要掌握一个关键:PHP 引擎是把一个 PHP 文件当作字节流来理解的。也就是说,在你认为是汉字的那个地方,无论你用的是 GBK 还是 UTF8,PHP 引擎都会照单全收。如果出现在注释部分,完全没有任何实际影响(是否会导致显示乱码完全取决于你的文本编辑器);如果出现在字符串常量部分,则 PHP 文件中相应的字节流就直接成为相应的字符串变量的内容(注意,PHP 语言中字符串也是“字节流”,而不是像 Java 语言那种“字符流”),将来是否会导致乱码也完全取决于后续对这个字符串变量如何使用(也就是对这个字节流如何转换、输出)。上面的 3 个问题我就不逐个回答了,请自己对照 :)说到 mysql 的编码方式,首先要分清“mysql数据库表的存储编码方式”和“传输编码方式”,前者跟程序这边几乎没有关系,只影响存储效率和兼容性;后者跟程序密切相关,使用不当会导致乱码,但其实想控制得好也很简单。只要在建立数据库连接后通过 SET NAMES charset 来指定“传输编码方式”,所有提交给数据库的 SQL 语句你都必须用指定的方式进行编码,所有从数据库得到的查询结果也都会是以该编码方式呈现。(重复强调一遍,往来传输的数据都是“字节流”)
    ————————————————————————————————
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
      

  12.   

    我是用 Eclipse 做 IDE 的,可以为“项目”指定一个文件编码方式,作为所有程序文件的“缺省编码方式”,然后每个文件(文件夹)都可以再指定不同的编码方式。我想其它的 IDE 在这点上应该是类似的吧?否则有点弱了。当然,一个项目,如果可能的话,还是统一的好。--------
    With sufficient thrust, pigs fly just fine. However, this is not necessarily a good idea. It is
    hard to be sure where they are going to land, and it could be dangerous sitting under them as they
    fly overhead.