当前位置: 技术问答>linux和unix
系统维护后百思不得其解?关于编码,高分相送,欢迎讨论
来源: 互联网 发布时间:2015-06-21
本文导语: 下面是我的维护经历: 我在windows下编的php程序,然后放到linux下,页面为乱码,然后把apache的adddefaultcharset设置为GB2312,不成功。 然后把php.ini编码设置为 GB2312,失败。 在浏览器里设置编码为GB2312,则为乱码,而为UTF...
下面是我的维护经历:
我在windows下编的php程序,然后放到linux下,页面为乱码,然后把apache的adddefaultcharset设置为GB2312,不成功。
然后把php.ini编码设置为 GB2312,失败。
在浏览器里设置编码为GB2312,则为乱码,而为UTF-8时,则标题正常,从数据库里读出的却为乱码。
后来没办法,只得把文件转移到window下,用window的php,当我从网络把文件拷到window下时,却发现,用edit plus打开源代码,其中的中文却变为乱码了,用记事本打开是正常的,网页显示却跟linux中一样了!!
然后,无意中,用edit plus把代码全选,复制,再粘贴为同样的一个文件,却所有的都正常!
最后,我把出现乱码的部分都用这样的方式解决了!
其中有几个疑问:
1.为什么我的windows程序到linux后通过apache却不正常(httpd.conf都正确)
2.windows的fat文件到linux中的ext3后是不是编码产生了变化而导制后来产生乱码。
3.为什么编码后来在edit plus不正常,用windows的记事本却正常,试过ultra edit,是正常的。edit plus和ultra edit上编码上有什么区别吗?
花了三天,闹心。
我在windows下编的php程序,然后放到linux下,页面为乱码,然后把apache的adddefaultcharset设置为GB2312,不成功。
然后把php.ini编码设置为 GB2312,失败。
在浏览器里设置编码为GB2312,则为乱码,而为UTF-8时,则标题正常,从数据库里读出的却为乱码。
后来没办法,只得把文件转移到window下,用window的php,当我从网络把文件拷到window下时,却发现,用edit plus打开源代码,其中的中文却变为乱码了,用记事本打开是正常的,网页显示却跟linux中一样了!!
然后,无意中,用edit plus把代码全选,复制,再粘贴为同样的一个文件,却所有的都正常!
最后,我把出现乱码的部分都用这样的方式解决了!
其中有几个疑问:
1.为什么我的windows程序到linux后通过apache却不正常(httpd.conf都正确)
2.windows的fat文件到linux中的ext3后是不是编码产生了变化而导制后来产生乱码。
3.为什么编码后来在edit plus不正常,用windows的记事本却正常,试过ultra edit,是正常的。edit plus和ultra edit上编码上有什么区别吗?
花了三天,闹心。
|
to dobly :
在浏览器里设置编码为GB2312,则为乱码,而为UTF-8时,则标题正常,从数据库里读出的却为乱码。
从这里估计你的页面使用的utf-8编码保存的,可是数据库里面的保存格式gbk编码的保存格式,造成数据编码的不统一。
你做一个简单的测试,将你的页面用一个能打开的文本编辑器打开(notepad应该没有问题的)后,另存为ansi格式的,然后再测试一下这个页面(连接数据库),此时应该是没有问题的。
在浏览器里设置编码为GB2312,则为乱码,而为UTF-8时,则标题正常,从数据库里读出的却为乱码。
从这里估计你的页面使用的utf-8编码保存的,可是数据库里面的保存格式gbk编码的保存格式,造成数据编码的不统一。
你做一个简单的测试,将你的页面用一个能打开的文本编辑器打开(notepad应该没有问题的)后,另存为ansi格式的,然后再测试一下这个页面(连接数据库),此时应该是没有问题的。
|
1。在WINDOWS下你是用IIS,还是APACHE呢?是否是调试的路径有问题啊!我调试过,WIN下和LINUX下有的路径需要改下的。
2。我没有你的问题。
3。没有什么不同吧!不会。
2。我没有你的问题。
3。没有什么不同吧!不会。
|
在linux下的默认编码格式(保存文件的时候用的是相应的字符集编码)是和你的系统的环境变量设置有关的,例如你的环境变量设置的是LANGUAGE=zh_CN的,用的就是中文的字符集。
你上面的遇到的情况也是我前几天无意中看的一些关于字符集编码的。
关于--edit plus和ultra edit的编码方面有什么区别?
实际上所有的编辑器都是对保存的文本具有猜测的功能的。
假设你写一个文本编辑器,但是你必须对不同的字符集分别进行处理,毕竟文件保存在磁盘上的时候是二进制的。这时,你的文本编辑器就要通过察看该文本的一些特殊的标记(例如文本的前几个字节,或者对于XML文件来说,文件中指定的编码格式)来决定你的编辑器是以什么编码方式打开该文件的。这就可以解释你的文件为什么有的时候是乱码了。
你上面的遇到的情况也是我前几天无意中看的一些关于字符集编码的。
关于--edit plus和ultra edit的编码方面有什么区别?
实际上所有的编辑器都是对保存的文本具有猜测的功能的。
假设你写一个文本编辑器,但是你必须对不同的字符集分别进行处理,毕竟文件保存在磁盘上的时候是二进制的。这时,你的文本编辑器就要通过察看该文本的一些特殊的标记(例如文本的前几个字节,或者对于XML文件来说,文件中指定的编码格式)来决定你的编辑器是以什么编码方式打开该文件的。这就可以解释你的文件为什么有的时候是乱码了。
|
我有过类似的,有时候notepad and ultraedit其中一个显示乱码。
|
可能是编码类型不同,UNix和dos下编码不同(很显然的/n和/r/n的区别)editplus下你默认的字符可能是dos下的,所以你打开unix下的文本就会乱麻,而uedit则会自动转换,所以正常。
|
Encoding的问题,不必太担心.