好久没写关于PJ的问题了,一来留意的较少,二来玩得有些倦了.不过今天可下被我遇见了新问题.
原因是这样的,很久很久以前我有一个用pjblog建的站,叫<新频道-自由视界 独特视野>,里面放置了很多杂七杂八的东西.当初用那个站做google ads,后来由于一系列原因(如空间放弃,工作学习等等原因),便不作了.
其实想想还是蛮可惜的,比较当时的流量每天还有那么2000多IP,RP也在4,就那么丢弃了.浪费啊,当然,我电脑里面的备份和数据库都还在.事隔两年多了,还是想把它挂在网上,我现在手头的空间比较多哈.管不管是那么回事,至少看看,怀念一下,当初啃着面包做站长的日子.名字换了下,也当是为了怀念了<live to ride>,或许有人不明白这名字是什么意思,好奇就查字典.
忘了,这次是为了说后台乱码的问题.
今天我把很久之前的备份做了升级->2.7版,再传到空间上去,竟然还能用.和当初离开的时候一摸一样,真不容易.但当我进入后台的时候我发现乱码问题出现了,右键刷新一下又恢复了,经过查找之后,我发现问题是这样.
原因是这样的,很久很久以前我有一个用pjblog建的站,叫<新频道-自由视界 独特视野>,里面放置了很多杂七杂八的东西.当初用那个站做google ads,后来由于一系列原因(如空间放弃,工作学习等等原因),便不作了.
其实想想还是蛮可惜的,比较当时的流量每天还有那么2000多IP,RP也在4,就那么丢弃了.浪费啊,当然,我电脑里面的备份和数据库都还在.事隔两年多了,还是想把它挂在网上,我现在手头的空间比较多哈.管不管是那么回事,至少看看,怀念一下,当初啃着面包做站长的日子.名字换了下,也当是为了怀念了<live to ride>,或许有人不明白这名字是什么意思,好奇就查字典.
忘了,这次是为了说后台乱码的问题.
今天我把很久之前的备份做了升级->2.7版,再传到空间上去,竟然还能用.和当初离开的时候一摸一样,真不容易.但当我进入后台的时候我发现乱码问题出现了,右键刷新一下又恢复了,经过查找之后,我发现问题是这样.
除非是一个个getBytes,弄得自己很费解,以前也没这样啊,再来我也继承了ProRequestProcessor进行重新编码,怎么会这样呢?最后发现,form 中的method 中竟然是get,改成post,问题解决!
另外附上一份filter的过滤方法:
另外附上一份filter的过滤方法:
复制内容到剪贴板 程序代码
public class SetCharacterEncodingFilter implements Filter {
// ----------------------------------------------------- Instance Variables
// ----------------------------------------------------- Instance Variables
最近在编写Java程序的时候,偶尔会遇到中文字乱码的问题,或者偏僻字不能正常显示的问题,经过查找资料并通过几次测试,目前已经完全解决。
首先需要说明一下我们经常用到的字符集,有ISO8859-1,GB2312,GBK,GB18030,UNICODE。这里ISO8859-1字符集只包含英文字符,使用一个字节存储。GB2312、GBK和GB18030字符集包含中文字符,他们都兼容ISO8859-1字符集,他们的字符存储格式是变长的,其中GB18030包含GBK,GBK包含GB2312。UNICODE包含世界上所有国家的字符,UNICODE又分为UTF-8,UTF-16和UTF-32三种,UTF-8是变长字符集,它兼容ISO8859-1,即英文字符使用一个字节编码,而其他的字符使用2到4个字节编码,其中中文字符大部分都是使用3个字节进行编码,少量偏僻字使用4个字节编码,UTF-16统一都使用2个字节编码,它不兼容ISO8859-1,英文字符也使用两个字节,UTF-32统一使用4个字节编码,也不兼容ISO8859-1,可见UTF-16和UTF-32都比较浪费空间。
乱码问题的产生最根本的原因就是使用错误的字符集解码字节流或者将给定的字符串用错误的字符集编码成错误字节流造成的,例如”中文”两个汉字,如果用ISO8859-1字符集将其编码为字节流,因为这个字符集不支持中文,所以就会出错,输出结果为3f3f,其意义就是??。再例如”中文”二字的GBK的字节流为d6 d0 ce c4,可是我们要是用不兼容的字符集去解码,例如用ISO8859-1或者UTF-8,这随后产生的字符串就是乱码,或者是其他的某个字符。
从开发Java程序到运行Java程序的过程中都存在着编码问题,所以要想避免乱码产生,就必须了解在其中任何时候的编码处理的情况。
源代码:在编写java源代码的时候,我们必须把编写的文本保存在文件中,这个时候不管用什么编辑器,都存在一个问题,就是以什么样的字符集将这些源代码(包含汉字)保存到文件中,大部分编辑器都会通过系统的环境变量得到系统的当前默认字符集,编辑器就会使用这个字符集将我们编写的源代码保存到文件中。一般我们的中文Windows系统的默认字符集是GB18030,AIX英文环境的默认字符集是ISO8859-1,AIX中文环境的默认字符集是IBM-eucCN。
首先需要说明一下我们经常用到的字符集,有ISO8859-1,GB2312,GBK,GB18030,UNICODE。这里ISO8859-1字符集只包含英文字符,使用一个字节存储。GB2312、GBK和GB18030字符集包含中文字符,他们都兼容ISO8859-1字符集,他们的字符存储格式是变长的,其中GB18030包含GBK,GBK包含GB2312。UNICODE包含世界上所有国家的字符,UNICODE又分为UTF-8,UTF-16和UTF-32三种,UTF-8是变长字符集,它兼容ISO8859-1,即英文字符使用一个字节编码,而其他的字符使用2到4个字节编码,其中中文字符大部分都是使用3个字节进行编码,少量偏僻字使用4个字节编码,UTF-16统一都使用2个字节编码,它不兼容ISO8859-1,英文字符也使用两个字节,UTF-32统一使用4个字节编码,也不兼容ISO8859-1,可见UTF-16和UTF-32都比较浪费空间。
乱码问题的产生最根本的原因就是使用错误的字符集解码字节流或者将给定的字符串用错误的字符集编码成错误字节流造成的,例如”中文”两个汉字,如果用ISO8859-1字符集将其编码为字节流,因为这个字符集不支持中文,所以就会出错,输出结果为3f3f,其意义就是??。再例如”中文”二字的GBK的字节流为d6 d0 ce c4,可是我们要是用不兼容的字符集去解码,例如用ISO8859-1或者UTF-8,这随后产生的字符串就是乱码,或者是其他的某个字符。
从开发Java程序到运行Java程序的过程中都存在着编码问题,所以要想避免乱码产生,就必须了解在其中任何时候的编码处理的情况。
源代码:在编写java源代码的时候,我们必须把编写的文本保存在文件中,这个时候不管用什么编辑器,都存在一个问题,就是以什么样的字符集将这些源代码(包含汉字)保存到文件中,大部分编辑器都会通过系统的环境变量得到系统的当前默认字符集,编辑器就会使用这个字符集将我们编写的源代码保存到文件中。一般我们的中文Windows系统的默认字符集是GB18030,AIX英文环境的默认字符集是ISO8859-1,AIX中文环境的默认字符集是IBM-eucCN。
Tags: 乱码
今天把更新过的CMS上传到服务器上面,发现又出了老毛病:乱码。本地显示正常,在服务器上面却不行。经过排查,发现竟然是web.xml的事。不留心把这行去掉了:
加上之后就好了,或者把另外一种方法,把web.xml不指定任何编码,这样默认是unicode编码。接着用程序去处理,如:
)[/code]
上面就是自动去找寻服务器上默认编码,这样服务器也认。
复制内容到剪贴板 程序代码
<mime-mapping>
<extension>html</extension>
<mime-type>text/html;charset=utf-8</mime-type>
</mime-mapping>
<extension>html</extension>
<mime-type>text/html;charset=utf-8</mime-type>
</mime-mapping>
加上之后就好了,或者把另外一种方法,把web.xml不指定任何编码,这样默认是unicode编码。接着用程序去处理,如:
复制内容到剪贴板 程序代码
StreamWriter sw1=new StreamWriter("c:\\x.txt",[code]System.Text.Encoding.Default
上面就是自动去找寻服务器上默认编码,这样服务器也认。