Telnet是系统管理员常用的远程登录和管理工具,在Windows 2000/XP/2003/Vista系统中它作为标准的系统组件集成到系统中供用户使用。不过默认情况下Telnet服务是被禁止,通常情况下我们只需运行services.msc打开服务管理,找到Telnet服务项设置其启动类型为“手动”或者“自动”,然后启动该服务即可使用了。不过在Windows 7中,你按照上述方法是不能找到并启用Telnet服务的。那如何找回Windows 7的Telnet功能呢?

  1、隐藏原因

  其实,在服务管理器中找不到Telnet并不是Windows 7抛弃了Telnet,而是默认状态下Windows 7并没有安装Telnet服务。这也是微软第一次从个人系统中将Telnet剔出了系统默认组件之外,这和Windows Server 2008类似。我想微软这么做,应该是出于安全性考虑,毕竟Telnet的数据是以明文传输的,攻击者和容易通过嗅探获取敏感信息。基于安全性考虑,建议大家还是使用安全性更高的、加密的SSH远程管理方式。

  2、安装Telnet

  不过,我们也没有必要因噎废食,作为个人用户Telnet还是非常方便的。在Windows 7下安装Telnet和Windows Server 2008略有不同,大家可以通过下面的操作方法实现。依次点击“开始”→“控制面板”→“程序”,“在程序和功能”找到并点击“打开或关闭Windows功能”进入Windows 功能设置对话框。找到并勾选“Telnet客户端”和“Telnet服务器”,最后“确定”稍等片刻即可完成安装。除此之外,我们也可通过该向导安装“TFTP客户端”、“Internet 信息服务”等

安装完成后,Telnet服务默认情况下是禁用的。还需执行“开始”→“运行”,输入servcies.msc打开服务管理器。找到并双击Telnet服务项,设置其启动方式为“手动”(更安全,只在需要的时候才启用),最后“启动”该服务“确定”退出即可
完整配置教程网上多的是.这里只是记录一下心得.配置过的都看得懂

1)增加用户

由于htpasswd是apache的内置命令,所以先进入apache的命令目录

# cd /usr/local/apache/bin/
# htpasswd  -cm /etc/svn/passwd  xx
# htpasswd  -m  /etc/svn/passwd  xx1



2)权限配置

小小配置,差别挺大的.

<Location /svn>
DAV svn
#SVNPath /svnroot/
SVNParentPath /svnroot/
AuthzSVNAccessFile /etc/svn/authz
AuthType Basic
AuthName "welcome to subversion"
AuthUserFile /etc/svn/passwd
Require valid-user
</Location>


在此情总下, SVNPath /svnroot/ 和 SVNParentPath /svnroot/ 是有区别的.

1. SVNPath /svnroot/svn1  在/etc/authz 的权限配置里面. 项目是用路径表示. 如: [/svn1] 表示根目录下面的 /svn1 目录的权限.

[/]
* = r

[/svn1]
* = r
xx = rw

2. SVNParentPath /svnroot/   在/etc/authz 的权限配置里面. 项目是用路径表示. 如: [svnroot:svn1/] 表示svnroot项目下面的 /svn1目录 的权限.
svnroot 表示在当前库的conf/svnserve.conf 里配置的名称realm = svnroot

来源:http://blog.xoyo.com/php/article/92973.shtml
实际得参考:http://www.svn8.com/svnpz/20080310/271.html
1.首先查看端口状态,可以使用命令
-># netstat -an   (若查看某个端口,后面可接端口号)

2.检查服务状态使用chkconfig,如检查SSH,
-># chkconfig sshd

如为off,则需要打开系统服务的端口,可用chkconfig on命令,如打开SSH,
-># chkconfig ssh on service xinetd restart

3.防火墙开放端口:

(方法一:)

i. 进入 /etc/sysconfig/ 目录,用 vi 命令编辑 SuSEfirewall2 文件,
-># vi SuSEfirewall2
在文件中找到FW_SERVICES_EXT_TCP,在其后面加上服务名或者是服务对应的端口,如SSH,
FW_SERVICES_EXT_TCP=”ssh” 或 FW_SERVICES_EXT_TCP=”22″
保存之后退出。

ii. 重启防火墙,以使配置生效,
-># rcSuEfirewall2 restart

(方法二:)

i. 进入 /etc/sysconfig/ 目录, 查找 iptables 文件。若不存在,则新建一个名为iptables文件,

-># touch iptables

ii. 在iptables文件中添加如下,以便打开端口,如:

-A RH-Firewall-1-INPUT -p tcp -m state -m tcp –dport 22 –state NEW -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state -m tcp –dport 80 –state NEW -j ACCEPT

iii. 重起iptalbes服务:service iptables restart 或重启机器。
方法三:)

引自:http://hi.baidu.com/wzj423/blog/item/81e8d2f9525b995d242df23a.html 部分内容

创建/etc/init.d/firewall文件:

vi /etc/init.d/firewall

放到/etc/init.d下的原因是方便自动启动。

脚本如下:

#!/bin/bash
# This program is used to use start my iptables.
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:~/bin
export PATH

case “$1″ in
start)
echo -n “Staring FireWall …”
# /sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -A INPUT -i lo -j ACCEPT

/sbin/iptables -A INPUT -p tcp -m tcp –dport 22 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p all -m state –state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -p all -m state –state INVALID,NEW -j DROP
echo “OK”

;;
stop)
echo -n “Stop FireWall … ”
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -Z
echo “OK”
;;
restart)
/etc/init.d/firewall stop
/etc/init.d/firewall start

echo “Restart FireWall OK”
;;
*)
echo “Usage: $0 {start|stop|restart}”
esac

exit 0

如果想新开端口,直接修改start部分即可。

测试firewall是否能正常工作:

/etc/init.d/firewall restart

没有问题。

配置firewall随系统自动启动:

cd /etc/init.d
update-rc.d firewall defaults 01

01表示启动优先级,让系统刚启动时就立即启动防火墙规则,可修改所有的K01为K99,在关机或重启服务器时最后停止防火墙服务。
可以啊。不过要注意端口不能用一个(默认为80,你的其中一个要换为其他端口)
据我所了解,你的选择方式有:
1、安装两套apache服务器,单独使用配置文件,网页(www)默认目录等。比如有个xampp,可以让你方便的安装使用 apache+perl+mysql。比如我这次的一个项目(作业)就是用xampp(不过学校机房是windows,所以我这个xampp是win下的)在学校机房给老师演示的。
2、安装一套apache服务器,其中一个用正常的方式运行,另外一个用配置文件(包含mysql服务配置,apache端口,默认目录配置,php配置等,)作为参数(具体方法看apache的使用说明或者Google一下)传入给apache程序。

这样就能运行两套apache了。
ps:个人意见,未实践,经过实践后有结果的话欢迎探讨。
Double-click 选项修改为 Close Tab:
双击复制并打开新session:
options -> global options -> Terminal -> Tabs 选择Double-click action的下拉框为Clone tab,这样就可以在已经打开的session标签中鼠标双击,打开一个完全一样的新session标签。
================================================================================================================

secureCRT6.5设置 自动登录 密码保存

1 telnet自动登录

a 点击connect in tab(alt+b)-->new session->按向导设置主机名,然后完成

点击在新窗口中浏览此图片

b 选择刚才设置的主机,点击右键弹出菜单,选择properties按钮。
点击在新窗口中浏览此图片

如图设置自动登录,在初始化发送中设置ogin和assword为你登录主机使用的用户名和密码,点击ok完成连接。
点击在新窗口中浏览此图片
2 ssh2连接方式

a ssh2顾名思义,就是安全连接,但那个不是本文的关注点,本文只关注自动登录,O(∩_∩)O~

前面步骤跟telnet连接方式相同,都是alt+b,然后new session,如图,然后完成。

点击在新窗口中浏览此图片

b 选择刚设置好的主机,鼠标右键,弹出菜单,选properties。

点击在新窗口中浏览此图片

c 在弹出的对话框中选择ssh2设置,再选择authentication中的password选项,点选右边的properties,弹出左下角对话框,填入登录用户名,密码,ok完成。
点击在新窗口中浏览此图片阅读全文
HTTP协议分析
HTTP协议之我见
                                
原文地址:http://bbs.sotenet.com/viewthread.php?tid=47      

//起因是昨天看了YELLOW哥的HTTP传文件的文章。下面的东西可能看起来有点乱。但基本原理写的都很清楚了。


/*
对HTTP协议进行分析:
测试环境:
WIN 2K -SP4
Apache/1.3.29 (Win32)
IE 6.0
Firefox/1.0

测试步骤:
1:先建立TCP连接。
2:发送如下请求:
GET /index.html HTTP/1.1
Accept:*?*
Accept-Language: zh-cn
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Host:192.168.0.119
Connection: Keep-Alive

3:如后接受数据:
接受到的的结构如下:  HTTP协议回应 + 网页正文 + HTTP的结尾结构

//------------------------------------------------------------------------具体数据如下


HTTP/1.1 200 OK

Date: Mon, 19 Dec 2005 10:51:54 GMT

Server: Apache/1.3.29 (Win32)

Last-Modified: Tue, 16 Mar 2004 12:24:28 GMT

ETag: "0-dab-4056f1fc"

Accept-Ranges: bytes

Content-Length: 3499

Keep-Alive: timeout=30, max=100

Connection: Keep-Alive

Content-Type: text/html


//**************************************网页正文(略)


HTTP/1.1 414 Request-URI Too Large

Date: Mon, 19 Dec 2005 10:51:54 GMT

Server: Apache/1.3.29 (Win32)

Connection: close

Content-Type: text/html; charset=iso-8859-1








Request-URI Too Large
The requested URL's length exceeds the capacity
limit for this server.

request failed: URI too long





--------------------------------------------------------------------------------


Apache/1.3.29 Server at localhost Port 8080



//------------------------------------------------------------------------数据结束


这之间还要有一个地方值得注意的就是当发出请求后,服务器回送数据时是分段发送的。
比如Apache/1.3.29 (Win32)返回一个大网页数据的时候就发送了5个包
1,2,3,4包是4098字节,最后剩下的数据由第5个包返回是1953个字节。
这5个包的数据结构如下:
1包:HTTP回应头结构 + 网页正文
2包:网页正文
3包:网页正文
4包:网页正文
5包:网页正文 + HTTP回应结尾结构


今天上午大哥说的东西其实就是这样一个东西:
1:SERVER开一个端口80。
2:CLIENT 连接 SERVER 用TCP协议,然后提出一个HTTP请求。
3:CLIENT 接收 SERVER 的数据,结构:HTTP回应头结构 + 文件内容 + HTTP回应结尾结构


从这些我们基本就可以看出来HTTP协议是建立在TCP协议之上。协议的请求和回应的结构也不是很严格。
这点和TCP,UDP等协议比较起来,HTTP协议并不像TCP/UDP等协议严格。
其实如果要较细致的学习这个协议,主要就是学习请求和回应的格式。


这是我截获的 IE6.0 的HTTP请求,访问命令:http://192.168.0.119:800

GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, *?*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Host: 192.168.0.119:800
Connection: Keep-Alive

这是我截获的 firefox 的HTTP请求,访问命令:http://192.168.0.119:800

GET / HTTP/1.1
Host: 192.168.0.119:800
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.7.5) Gecko/20041224 Firefox/1.0
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*?*;q=0.5
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive


注:以上请求里面有都一个*?*,其实这“?”应该是“/”  原因是因为是程序里面的注释符号



今天就着昨天的研究成果上面又具体的看了一下,还那昨天的那5个包做例子:

这之间还要有一个地方值得注意的就是当发出请求后,服务器回送数据时是分段发送的。
比如Apache/1.3.29 (Win32)返回一个大网页数据的时候就发送了5个包
1,2,3,4包是4098字节,最后剩下的数据由第5个包返回是1953个字节。

(info_php.php)
这5个包的数据结构如下:
1包4098:HTTP回应头结构 + 5个字节的数据() +  网页正文
2包4098:5个字节的数据()  +  网页正文
3包4098:5个字节的数据()  +  网页正文
4包4098:5个字节的数据()  +  网页正文
5包1953:5个字节的数据()  +  网页正文 +  5个字节的数据(通常是0) + HTTP回应结尾结构 + 网页结构


以上是对大于两个分段的网页的测试:(index.htm)
两个分段的网页:
1包4096:HTTP回应头结构 + 网页正文 + HTTP回应结尾结构 + 网页结构(一半)
2包195:网页结构(另一半)

以上是对大于一个分段的网页的测试:(index.html)
1包949: HTTP回应头结构 + 网页正文 + HTTP回应结尾结构 + 网页结构

一点小小的疑惑:当我测试普通的网页(*.html)反回分段时没有那5个字节的数据。
但当我测试动态网页(*.php)时在里面有那5个字节的数据,我不明白是不是里面还有什么别的机制来控制
HTTP协议的数据分段。另外说一点就是,那个5个字节的数据是16进制的数据。
大概是代表本分段里面的网页正文数据的字节数。

相信HTTP协议里面还有我没有发现的东西,但基本的东西我想我这里面写应该差不多了!

下面是我测试的小程序代码:





//----------------------THE----END--------------------------------------
首先说一下儒家:阅读全文
中国道家的创始人老子与越国大夫范蠡是师生关系。阅读全文

$(".btn1").click(function(){
  $("div").scrollTop(100);
});

$(selector).scrollTop(offset)




      var login_css = document.createElement('link');
      login_css.id = 'login_css';
      login_css.rel = 'stylesheet';
      login_css.type = 'text/css';
      login_css.media = 'screen';
      login_css.href = css_url;
      document.body.appendChild(login_css);



    // add div element
    var divE = document.createElement('div');
    divE.id = 'login_container';
    divE.style.visibility = 'hidden';
    divE.style.opacity = 0;
    
    var login_HTML = "";



    var d = document.documentElement || document.body;
    var scrollTop = d.scrollTop > d.offsetTop ? d.scrollTop : d.offsetTop;
    divE.style.top = scrollTop+220+'px';
      
      document.body.appendChild(divE);
在向大家详细介绍CentOS ulimit之前,首先让大家了解下CentOS ulimit,然后全面介绍CentOS ulimit,希望对大家有用。CentOS ulimit值(Linux文件句柄数量)在CentOS5(RHEL5)中的调整。

在Linux下面部署应用的时候,有时候会遇上Socket/File: Can’t open so many files的问题,比如还有Squid做代理,当文件打开数到900多时速能就非常快的下降,有可能打不开网页.
其实Linux是有文件句柄限制的,而且Linux默认不是很高,一般都是1024,生产服务器用其实很容易就达到这个数量.

查看方法
我们可以用CentOS ulimit -a来查看所有限制值
[root@centos5 ~]# Centos ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
max nice                        (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 4096
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
max rt priority                 (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 4096
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited||<

其中 "open files (-n) 1024 "是Linux操作系统对一个进程打开的文件句柄数量的限制(也包含打开的SOCKET数量,可影响MySQL的并发连接数目).这个值可用CentOS ulimit命令来修改,但CentOS ulimit命令修改的数值只对当前登录用户的目前使用环境有效,系统重启或者用户退出后就会失效.
系统总限制是在这里,/proc/sys/fs/file-max.可以通过cat查看目前的值,修改/etc/sysctl.conf 中也可以控制.
另外还有一个,/proc/sys/fs/file-nr,可以看到整个系统目前使用的文件句柄数量
查找文件句柄问题的时候,还有一个很实用的程序lsof.可以很方便看到某个进程开了那些句柄.也可以看到某个文件/目录被什么进程占用了.

修改方法
若要令修改CentOS ulimits的数值永久生效,则必须修改配置文档,可以给CentOS ulimit修改命令放入/etc/profile里面,这个方法实在是不方便,还有一个方法是修改/etc/sysctl.conf .我修改了,测试过,但对用户的CentOS ulimits -a 是不会改变的。只是/proc/sys/fs/file-max的值变了.(我给命令放到rc.local中失败)

我认为正确的做法,应该是修改/etc/security/limits.conf
里面有很详细的注释,比如
* soft nofile 32768
* hard nofile 65536
也可以直接运行下面这个shell。直接copy到你的终端中运行就好了.
echo -ne "
* soft nofile 65536
* hard nofile 65536
" >>/etc/security/limits.conf

就可以将文件句柄限制统一改成软32768,硬65536.配置文件最前面的是指domain,设置为星号代表全局,另外你也可以针对不同的用户做出不同的限制注意.这个当中的硬限制是实际的限制,而软限制,是warnning限制,只会做出warning.其实CentOS ulimit命令本身就有分软硬设置,加-H就是硬,加-S就是软默认显示的是软限制,如果运行CentOS ulimit命令修改的时候没有加上的话,就是两个参数一起改变.生效
修改完重新登录就可以见到.(我的系统是CentOS5.1.修改了,重新登录后就立刻生效.可以用CentOS ulimit -a 查看确认.)
如果你使用squid的话,你要在/etc/init.d/squid的文件加入CentOS ulimit -HSn 65535.另外,在squid.conf中也要加入max_filedesc 16384


freebsd下的ulimit命令在哪里?
今天,一个网友问我freebsd的ulimit怎么没有,其实这个问题随便google一下就有了,网上现成就有答案的。
首先要看用的是什么shell,很多shell都有内部命令ulimit,不过freebsd的默认shell 是csh,它的对应内部命令是limit不是ulimit,freebsd还有一个外部命令limits,freebsd中需要改变这些资源使用限制只能用外部命令,内部命令改不了,如果你一定要用ulimit的话,就只能安装有ulimit内部命令的shell,比如bash,sh。
前面说到我放弃IIS全面转向apache了,随后因为小丫头的出生,一直都比较忙,也没空仔细检查。这两天稍微闲了点,让我发现居然有两处乱码问题:一处是后台编辑文章处的“热门标签”,中文标签全部乱码;另一处则是安装的WP-RecentComments插件,在侧边栏首页显示正常,但一点下一页后就会变乱码了。  
    经过查询得知都是因为apache编码设置的问题,因为原本我服务器上的apache上运行的一套系统文件编码是gb2312,httpd.conf中设置AddDefaultCharset gb2312,从而导致wp中某些模块无法正常以utf-8编码解析。折腾了一下午,总算是解决了让apache同时支持GBK和UTF-8编码。
    以下为具体解决方法:
    1、httpd.conf中设置AddDefaultCharset off,并在原gb2312编码系统所设置的虚拟主机字段中加入AddDefaultCharset gb2312。
    2、注释掉php.ini文件中的default_charset = “gb2312″
    3、重启apache服务,搞定!



使用AddCharset变量将字符编码应用到指定后缀名的当前目录以及子目录的所有文件上。比如,为所有后缀名为.html的文件指定UTF-8字符编码,我们可以在.htaccess文件中加入一下代码:


AddCharset UTF-8 .html
后缀名可以是包括或者省略前面的”.”. 我们也可以在一行中同时指定多个后缀名。在一般情况下,最好将Apache的默认字符编码设置为UTF-8;


AddDefaultCharset utf-8
AddDefaultCharset可以为On/Off或者任何在IANA注册的,在MIME介质类型中使用的字符值。当且仅当响应的content-type是text/plain或text/html时,它会为介质类型字符参数指定默认的值。这个值会覆盖在响应中通过META指定的字符集,当然最后的行为还要取决于用户使用的客户端/游览器设置。当AddDefaultCharset为Off时,将关闭这个功能;设置为On时,将使用默认的字符集iso-8859-1;或为AddDefaultCharset指定可选的字符集比如UTF-8。
通过使用AddType也可以实现字符编码设置,这个参数会同时指定字符编码和MIME类型。


AddType 'text/html; charset=UTF-8' html
在Apache中,我们也可以为某一个特定的文件设置字符编码。比如,我们希望在一个文件夹中,只对文件example.html使用UTF-8,而其他文件仍然是用默认编码。我们可以编辑这个文件夹下的.htaccess文件,并添加如下内容:


<Files "example.html">
     AddCharset UTF-8 .html
</Files>
通过以下配置,可以实现同样的效果:


<Files "example.html">
    ForceType 'text/html; charset=UTF-8'
</Files>
我们也可以使用正则表达式为多个文件指定编码。例如:


<FilesMatch ".(htm|html|css|js)$">
    AddCharset UTF-8 .html
</FilesMatch>
或
<FilesMatch ".(htm|html|css|js)$">
    ForceType 'text/html; charset=UTF-8'
</FilesMatch>
注:需要注意的是配置参数的顺序对于结果起到重要的作用。比如在配置文件中有如下设置:


AddCharset UTF-8 .utf8
AddCharset windows-1252 .html
在这种配置下,文件example.utf8.html将使用windows-1252,而example.html.utf8将使用UTF-8字符编码;


来源:http://looki.cn/348.html
问题:
PHP 中文截取UTF8的编码 16个字符 有没有现成的,多了用...。
回答:
mbstring
问道:那中文一个字占用多长,E文标点多长?
回答:
mb都认为是一个

阅读全文
参考:http://www.jackxiang.com/post/3170/
除了网上流传的环境配置以外,
在PHP程序中加上 ini_set('default_charset','utf-8');
将包含unicode码的文件统一转换成utf8格式,这里需要注意的是editplus保存的utf8文件不带BOM头,
这在大多数情况下不会有什么问题,而在模板输出时会有乱码现象,除了检查模板文件中utf8的标记之外,利用editplus来保存模板时没有BOM头也是一个原因,原因在于模板解析时,PHP读取文件时,没有检查到BOM头,会把该文件当成ansi格式处理,这样最终向浏览器输出的HTML就成了乱码。
另一篇文章:
我的页面代码如下

[Copy to clipboard] [ - ]CODE:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<link rel="stylesheet" type="text/css"  href=http://bbs.chinaunix.net/"script/css.css" />
<script type="text/javascript" src=http://bbs.chinaunix.net/"script/menu.js"></script>
</head>
<body class="leftbgcolor">
<div><imgsrc=http://bbs.chinaunix.net/"image/gl.gif" border="0"/>&#44288;&#47532;&#49468;&#53552;</div>
编码选择utf-8,但是打开时ie自动选择的却是gb2312出现乱码,在DW里我选取择"包括Unicode签名(BOM)"后,ie自动选择utf8就不会出现乱码,我不想使用BOM,因为使用BOM后,session又会提示警告。大家说应该怎么办呢?
先去除 BOM。然后再加入:

[Copy to clipboard] [ - ]CODE:header('Content-Type: text/html; charset=UTF-8');
即可。

httpd.conf

AddDefaultCharset   GB2312

PHP.INI

default_charset   =   "gb2312 "

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

如果你在网上搜索 “apache配置”,搜到的页面大多都会建议你在httpd.conf中加上这么一句:AddDefaultCharset GB2312。对于新手而且是只用GB2312编码的开发人来说,这么做是ok的。

但是如果要想使用UTF-8字符集的话,比如 在test.php文件中需要有
meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ 这段代码。这时你再打开浏览器访问test.php页面的话,你看到的是正确的页面。但是如果实际上浏览器还是以GB2312编码解释从服务器返回的response,为什么呢?原因是浏览器是根据http应答消息头部中的 Content-type: text/html; charset=GB2312 来决定使用何种编码解释应答,也就是说apache服务器仍然用GB2312编码传递数据。

所以说如果apache的默认字符集被设置成了GB2312,即使在页面中声明使用UTF-8编码,apache服务器还是会按照GB2312编码来传送http response。

没 关系,我们把AddDefaultCharset GB2312 改成 AddDefaultCharset UTF-8,看看什么结果?如果你看到乱码恭喜你,你还知道是乱码问题;如果你看到是空白页面,那么你就惨了,你可能会以为这是其他什么原因造成的,而不 会从编码的角度去考虑怎么解决问题。这是为什么?

原因在于php文件本身是用系统字符集来编码的,中文的windows XP都是用GB2312,每一个文件头部都有字段指示该文件是用何种方式编码的。当apache接到浏览器的请求后,会让php去解释所请求的页面,比如 test.php。php会识别出test.php的编码方式是GB2312后(就像我们用javac编译java源文件时,编译器默认用系统编码读源文 件里的内容。如果源文件不是用系统编码来保存的,可以用命令javac -encoding指定具体的编码),把数据以GB2312的编码格式传递给apache,而apache服务器不会改变从php传来的数据,只是在应答 消息头部中把字符集设置成UTF-8: Content-type: text/html; charset=UTF-8. 也就是说你传递的是GB2312编码的数据,而浏览器却以UTF-8编码来解释应答消息。

由 于UTF-8为3个字节表示一个汉子,而普通的GB2312或BIG5是两个。页面输出时,由于上述原因,出现半个汉字的情况,这时该半个汉字会和的 >结合成一个乱码字,导致IE无法读完的话,会发现实际上整个叶面全部已经输出了。如果使用的是Mozilla、Mozilla Firefox、Sarafi的浏览器这不会造成这个问题,而是一堆乱码。这是由于Firefox浏览器和IE解析网页编码的策略不同产生的。

OK,我们把test.php以UTF-8保存,再用浏览器访问时,就没有问题了。可这样做,会使得apache目录下的所有web应用只能用同一种编码。如何搞定?

解决办法:

首先,可以使用AddDefaultCharset off来 关闭默认文件编码,这样apache服务器就不会在http应答消息头部设置charset,只是设置Content-type: text/html. 而浏览器就会依靠html文件中设置的harset来决定编码。其次,脚本php.ini文件中的default_charset = “UTF-8″作用同httpd.conf文件,把该行注释掉,使php自动识别文件的编码方式。

这样不论你用什么编码方式,只要test.php中的
meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ 与你test.php文件编码方式相同,就不会产生乱码问题。

用户提交数据的编码

浏 览器提交的字符编码由客户端的characher encoding决定。例如,当前浏览器的编码是Gb2312,用户提交数据后,无论apache设置的编码方式是GB2312还是UTF-8,这时在服 务器端接收到的仍是以Gb2312编码的数据。如果要在返回页面上显示用户刚才提交的数据,而该页面是用UTF-8编码,或者要在数据库中存储的用户提交 的数据,而数据库是UTF-8编码的,那就要做字符转换了。
1.查看CPU信息命令
cat  /proc/cpuinfo

2.查看内存信息命令
cat  /proc/meminfo

3.查看硬盘信息命令
fdisk -l

dmidecode |more
dmidecode |more
Handle 0x0005
        DMI type 2, 20 bytes.
        Base Board Information
                Manufacturer: Intel Corporation
                Product Name: D945GPM
                Version: AAD25924-102
                Serial Number: AZPM61102417


dmidecode |more

[/usr/local/tads/htdocs/soa/soa1.3]# dmidecode |more
# dmidecode 2.7
SMBIOS 2.5 present.
66 structures occupying 3399 bytes.
Table at 0xCFB9C000.

Handle 0xDA00, DMI type 218, 11 bytes.
OEM-specific Type
        Header and Data:
                DA 0B 00 DA B2 00 17 00 0E 20 00

Handle 0x0000, DMI type 0, 24 bytes.
BIOS Information
        Vendor: Dell Inc.
        Version: 2.2.6
        Release Date: 02/05/2008
        Address: 0xF0000
        Runtime Size: 64 kB
        ROM Size: 1024 kB
        Characteristics:
                ISA is supported
                PCI is supported
                PNP is supported
                BIOS is upgradeable
                BIOS shadowing is allowed
                ESCD support is available
                Boot from CD is supported
                Selectable boot is supported
                EDD is supported
                Japanese floppy for Toshiba 1.2 MB is supported (int 13h)
                5.25"/360 KB floppy services are supported (int 13h)
                5.25"/1.2 MB floppy services are supported (int 13h)
                3.5"/720 KB floppy services are supported (int 13h)
                Print screen service is supported (int 5h)
                8042 keyboard services are supported (int 9h)
                Serial services are supported (int 14h)
                Printer services are supported (int 17h)
                CGA/mono video services are supported (int 10h)
--More--
在使用 Zend Studio for Eclipse 的 “run as PHPUnit test” 功能时,前后遇到了几个错误:

点击 “run as PHPUnit test” 时,Zend Studio for Eclipse 假死,并且没有需要运行的 test 的统计数字。点击停止时,会提示 “No test executed, Either a fatal error occurred, the launch was stopped manually or the script execution was halted with a ‘die’/'exit’ statement.” 。 出现这种情况,是很难知道问题所在的,因为 console 中也没有任何错误提示。我也是因为偶然间在所有 test 之前加了一个空的 test case ,才发现了问题所在 “Call to undefined function curl_init()”,因为程序中调用了 curl。

但是,我的 php 是加载了 curl 的,问题依然没有解决,不过 console 中的一行字显示了问题所在 “AllTest.php [PHPUnit] /usr/local/Zend/ZendStudioForEclipse-6.1.0/plugins/org.zend.php.debug.debugger.linux.x86_5.2.14.v20080602/resources/php5/php-cgi” ,原来,Zend Studio for Eclipse 使用自带的 php 程序来执行调试功能的,所以才会出现 curl 没有加载的问题。

在 window/preferences 中,php 选项中的 PHP Executables 里面,我加入了自己的 php 可执行程序,运行一下,提示没有  ZendDebugger ,一番奋战之后,问题解决。
来源:http://www.codebit.cn/blog/?p=55
分页: 178/338 第一页 上页 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 下页 最后页 [ 显示模式: 摘要 | 列表 ]