首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>java>java企业应用>正文

编码讨论-关于JAVA乱码问题之终极解决

http://www.oklinux.cn  2008-03-07  来源: 赛迪网 easyjf  会员收藏  游客收藏  【 】 

1 工程
工程内所有的 .java .jsp .xml .txt 都有默认的编码 默认的是系统环境的编码
我们中文系统通常是GBK 推荐都采用utf-8
utf-8 的时候 你编译 生成doc 可能会遇到乱码(特别是采用ant 的时候,生成doc你几乎100%会遇到)

解决方法 以ant 为例子
编译 注意 encoding 参数
< target name="build" >
< mkdir dir="${build.dir}" />
< javac encoding="utf-8" destdir="${build.dir}" target="1.3" debug="true" deprecation="false" optimize="false" failonerror="true">
< src path="${src.dir}" />
< classpath refid="master-classpath" />
< /javac>
< /target>

生成doc 注意 encoding 和 charset
< target name="doc">
< mkdir dir="doc" />
< javadoc charset="utf-8" encoding="utf-8" packagenames="${packages}" sourcepath="src" destdir="doc" author="true" version="true" use="true" splitindex="true" >
< classpath refid="master-classpath" />
< /javadoc>
< /target>

这里 的encoding 就是指的你 java 文件的编码格式 javac 和javadoc 都有这个参数
charset 指的是 生成 doc 后的编码方式 javadoc 的参数

2 数据库
mysql 的编码最复杂 从4以后 mysql 号称支持多编码 它更灵活了 我们也更麻烦了
mysql 有4个级别的编码
系统级
库级
表级
sql语句级
请保持采用统一的编码 推荐utf-8
其它数据库要简单的多 一般都是一种编码

3 web server
tomcat 为例
tomcat server.xml 中一个参数
< Connectorport="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIncoding="utf-8"/>
经测试 这个URIncoding 参数主要是 get 方法中采用编码

4 jsp 显示层
第1条中说明了 jsp 文件本身的格式
很多朋友采用eclipse myeclipse 生成jsp
它自动生成一个头< %@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
不要误解 这句话不能保证你在ie里看到的不是乱码
pageEncoding它的意思是 这个页面本身采用的是 utf-8 (似乎只在eclipse 里有效果 ,我不确定)
为了在ie 里不乱码 你还得加一句 < %@ page contentType="text/html; charset=UTF-8"%>
它不能在(myeclispe)自动生成 推荐修改 myeclipse的模板 在下边的目录里
MyEclipse\eclipse\plugins\com.genuitec.eclipse.wizards_4.0.1\Templates
里边的jsp模版 你加上< %@ page contentType="text/html; charset=${encoding}"%>

5 filter
自从tomcat 4 以后 网上就流传了一个SetCharacterEncodingFilter 过滤器 搜一下有很多
很好用 web.xml 中加入
< filter>
< filter-name>Set Character Encoding< /filter-name>
< filter-class>filters.SetCharacterEncodingFilter< /filter-class>
< init-param>
< param-name>encoding< /param-name>
< param-value>utf-8< /param-value>
< /init-param>
< /filter>
< filter-mapping>
< filter-name>Set Character Encoding< /filter-name>
< url-pattern>/*< /url-pattern>
< /filter-mapping>

6 资源文件
首先保证 文件本身是utf-8
然后部署的时候用 native2ascii 转换
这里给出 ant 里的例子
< native2ascii encoding="utf-8" dest="${web.dir}/WEB-INF/classes" src="${src.dir}" includes="**/*.properties" />


上一篇:Visual C# 常见问题   下一篇:开发框架--对于IOC模式的思考和疑问


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·开发框架--对于IOC模式的思考和疑问
·JDK核心API--实际例子学正则表达式
·开发框架--Hibernate中各个包的作用
·JDK核心API--Java中配置信息的存取
·Java 安全--简单谈谈JAVA程序的反编译
·设计及设计模式:JDBMonitor基本原理探究
·中间件--怎样安装和配置Tomcat Admin
·开发框架--浅谈Hibernate的flush机制
·开发框架:Spring技巧之活用FactoryBean
·网络:如何使用Java网络启动部署软件
·框架:当前流行的J2EE WEB应用架构分析
·开发框架-分析Tomcat下中文的彻底解决
·数据库相关:JDBC直连SQL Server 2005
·设计模式:Bridge模式 和Composite模式
·讨论手动部署EJB 亲自体验EJB开发流程
·设计及设计模式:对于模式的“十大误解”
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Java SE6调用Java编译器的两种新方法
·表现层框架Struts/Tapestry/JSF比较
·在Web项目中用到JNI时应该注意的问题
·JBuilder7 Weblogic7 mysql开发EJB配置
·进阶:Java Reflection (JAVA反射)详解
·以全局的固定顺序获取多个锁来避免死锁
·JAVA高级:Java中限时线程回调方式的实
·超线程多核心下Java多线程编程彻底分析
·开发JAVA编程中字符串分割的两种方法
·Java理论和实践:用软引用阻止内存泄漏
·JAVA入门基础:区分引用类型和原始类型
·学习心得 - JSP处理异常及一些高级主题
  阅读排行
·Commons-logging Log4j 的入门指南
·进阶:Java Reflection (JAVA反射)详解
·服务器及中间件:TomCat 多虚拟站点配置
·开发框架:一篇关于SSH架构的简单总结
·Java语言:敏捷开发技巧-消除代码异味
·jboss4.0下使用MySql数据源的设置方法
·Java SE6调用Java编译器的两种新方法
·数据库相关:Log4j和JDBMonitor的比较
·使用JAVA中的动态代理实现数据库连接池
·架构与模式:多线程有几种常用的编程模
·开发框架-Struts里过滤器的简单使用
·表现层框架Struts/Tapestry/JSF比较
·在Web项目中用到JNI时应该注意的问题
·多线程设计模式:了解wait/notify机制
·开发框架:利用STRUTS实现国际化支持
网摘收藏: