解决WordPress升级后出现Warning: Cannot modify header information - headers already sent by

WordPress 2.9.2升级之后出现一个问题,在一些操作,比如删除垃圾留言、发表新的文章时候会提醒一下的错误。

Warning: Cannot modify header information - headers already sent by (output started at /home/alswl/public_html/wp-settings.php:1) in /home/alswl/public_html/wp-includes/pluggable.php on line 868

我简单查找了一下,这是一个简单的编码问题,1分钟可以搞定了。

1.Ftp下载wp-settings.php这个文件,用记事本打开这个文档。

2.另存为"ANSI"格式的文本。

3.重新上传覆盖原文件。

如果还有其他文件出现问题,继续修改编码有问题的文件 …

more ...

编码: ASCII(ANSI), GB-2312, UNICODE, UTF-8,UTF-16

ASCII字符集

7位的编码方案,总共表示128个字符,其中包括了大小写英文字母、数字、标点符号等常用字符。英语世界已经足够应付。

ISO-8859-1字符集

也称ISO-Latin字符集,它扩展了ASCII字符集,用到了8bit字节里的最高一位,这样它就有256个字符,前128个字符和ASCII字符集相同 。有了ISO-Latin字符集,西方世界的一些其它语言,如西班牙语、法语、德语、意大利语都够用了。

GB系列字符集(GB2312,GBK,GB18030)

由于一个字节是无论如何也表达不了哪怕是最长用的汉字字符集的,所以为了用计算机存储汉字,必须使用多个字节。

多字节字符集就是使用可变长的编码长度来编码字符,有的字符用一个字节编码,比如ASCII字符,有的字符用两个字节编码,比如汉字。在VC里,多字节字符集等同于双 字节字符集,VC不支持多于2个字节编码长度的字符。GB系列的字符集和ISO-Latin字符集一样,前128个字符和ASCII字符集相同。GB系列字符集是兼容 的,相同的中文字符在这3个字符集里有相同的编码。GB2312和GBK一个字符最多2个字节表示,GB18030可多达4个字节。在这种编码里表示汉字时,需要一个 leading byte,它总是大于127,这个字节的含义是说明它和后面的字节(们)一起表示一个字符 …

more ...

MySQL Command Line Client乱码问题及解决方案

以前用MySQL时候都是可视化界面,如MySQL Admin使用,现在学着使用MySQL Command Line client,初次接触,就遇到乱码问题。

乱码是中文字符串的,Google后,找到一些解决方案。摘录如下:

引用自今天去祸害哪家的闺女呢?<猛击这里打开>

1:改变数据库的默认编码配置,在MYSQL的安装目录中,找到my.ini,修改默认编

码为:default-character-set=utf8

2:建立数据库时,CREATE DATABASE ms_db CHARACTER SET utf8 COLLATE

utf8_general_ci;

3:执行脚本:指定编码格式set names utf8(注意,不是UTF-8)

4:如果你采用的是外部接入的方式,在连接中确定请求的编码格式如:

jdbc:mysql://localhost:3306 /ms_db?

useUnicode …

more ...

乱码之战

今天重新设计了贴吧的数据库,参考了WordPress的无外键,设置default的值,我取消了两个外键,仅保留一个对应CategoryId的外键。

修改数据库时候发现MySQL的charset还是'latin',就顺手修改成'utf-8'来保证统一,结果就出事了。

因为我修改了DAO,单元测试之后重新走一遍网页测试流程,结果发帖时候遇到乱码。

一回生两回熟,咱也不怕。

在Action里面设置logger,输出相应的数据,发现那里就是乱码,说明在Severlet或者Interceptor那里就出了问题。

仿照上次设置Tomcat字符集,详情见Eclipse中开发的Jave EE项目在Tomcat的部署 ,但是测试发现没有效果。

接着查看web.xml,发现里面还有Spring的filter,贴吧现阶段还没有加入Spring,删除,有一个编码过滤器org.apache.struts2 .dispatcher.FilterDispatcher,采用org.apache.struts2.dispatcher.FilterDispatcher可 以不适用,删除。

这么一删,就发现乱码问题解决了。

呵呵,只要人类还有很多语言,乱码仍然会存在,遇到了不要怕,慢慢调试就出来了

more ...

Eclipse中开发的Jave EE项目在Tomcat的部署

贴吧最基本的功能写完了,正好可以应付数据库设计课的实验。于是我准备把贴吧的项目从Eclipse的开发环境中移植出来,在Tomcat中进行部署。

也许是习惯了Eclipse提供的便利,这个小小的移植,居然难倒了我,直接把Eclipse里的PostBar考出,根本不能运行,直接报404错误。Google 上也没有提供详细的步骤,也许大家都觉得这个问题很简单吧,呵呵。

我琢磨了一会,终于整理出了头绪。

1.修改Apache-conf-server.xml这个文件,修改其中一段...如下所示

<host appbase="webapps" name="localhost"
    unpackWARs="true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">
    <context debug="0" docbase="F:T3" path="/postbar">
          reloadable="true" crossContext="true">
    </context>
</host>

这一段的作用是在原先webapps的目录下添加虚拟目录/postbar …

more ...

乱码!又见乱码!

今天解决了贴吧发帖的问题,可以正确的发送到正确的分类了。

随后遇到的问题是发帖完毕返回 Category.action 时候,无法读取争取的贴吧分类数据,经过在 struts.xml 里的Category.action 里的 result 后面的url加入参数,可以读取正确categoryId了

本来想在result中加入param元素而不是在url后面加 ?categoryId=0来实现,但是尝试了好久,Google和官方文档都没有什么解决方案

其中遇到的一个问题是「&」这个符号不能直接使用,需要进行转义,用「&」来替代。

最后是categoryName的问题了,本来以为很简单,却遇到了编码问题,之前从Home.action转到Category.action能正确编码,像 ht tp://localhost:8080/PostBar/Category.action?categoryId=4&categoryName=%E9%9F%B 3%E4%B9%90 …

more ...

Struts2的编码问题

继续昨天的编码问题 我一直全部采用UTF-8格式,而且在jUnit测试中并没有问题,说明是在Struts进行数据收集时候出错。

Google之后,根据网上一些建议修改web.xml struts.xml 但都没有效果。

网上建议在web.xml中添加 :

<filter>
    <filter-name>struts-cleanup</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp
    </filter-class>
</filter>
<filter-mapping>
    <filter-name>struts-cleanup</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

来设定本地化和编码,然后在struts.xml中添加过滤器

<constant value="UTF-8" name="struts.i18n.encoding"></constant>
<constant value="UTF-8" name="struts.locale"></constant>

根据我测试 …

more ...