SOS:关于字符集(Oracle9+JAVA)

zyhowe 2004-09-08 03:09:32
1.关于NLS_LANG
select a.parameter,a.value as nls_database,b.value as nls_instance,c.value as nls_session
from nls_database_parameters a,nls_instance_parameters b,nls_session_parameterS c
where a.parameter=b.parameter(+) and a.parameter=c.parameter(+)

NLS_CALENDAR GREGORIAN GREGORIAN
NLS_CHARACTERSET ZHT16MSWIN950
NLS_COMP BINARY BINARY
NLS_CURRENCY $ RMB
NLS_DATE_FORMAT DD-MON-RR DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN SIMPLIFIED CHINESE
NLS_DUAL_CURRENCY $ RMB
NLS_ISO_CURRENCY AMERICA CHINA
NLS_LANGUAGE AMERICAN AMERICAN SIMPLIFIED CHINESE
NLS_LENGTH_SEMANTICS BYTE BYTE BYTE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_NCHAR_CONV_EXCP FALSE FALSE FALSE
NLS_NUMERIC_CHARACTERS ., .,
NLS_RDBMS_VERSION 9.2.0.1.0
NLS_SORT BINARY BINARY
NLS_TERRITORY AMERICA AMERICA CHINA
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM DD-MON-RR HH.MI.SSXFF AM
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR DD-MON-RR HH.MI.SSXFF AM TZH:TZM
NLS_TIME_FORMAT HH.MI.SSXFF AM HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR HH.MI.SSXFF AM TZH:TZM

2.Filter
public class SetCharacterEncodingFilter implements Filter {
protected String encoding = null;
protected FilterConfig filterConfig = null;
protected boolean ignore = true;

public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
String value = filterConfig.getInitParameter("ignore");
if (value == null)
this.ignore = true;
else if (value.equalsIgnoreCase("true"))
this.ignore = true;
else if (value.equalsIgnoreCase("yes"))
this.ignore = true;
else
this.ignore = false;
System.out.println(encoding);
}

public void destroy() {
this.encoding = null;
this.filterConfig = null;
}

public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain)throws IOException, ServletException {
if (ignore || (request.getCharacterEncoding() == null)) {
if (this.encoding != null){
request.setCharacterEncoding(this.encoding);
//response.setCharacterEncoding(this.encoding);
//System.out.println(this.encoding);
}
}
chain.doFilter(request, response);
}
}

WEB.XML配置:
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>com.myjsp.normal.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gb2312</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

3.出现的问题:
JSP页面(GB2312)输入:中华人民共和国(简体)

ORALCE服务器看到的:中華人民共和國(繁體)
ORALCE客户端看到的:中华人民共和国(简体)

JSP页面(gb2312)显示:中?人民共和?(也即部分乱码)
JSP页面(BIG5)显示:中華人民共和國(繁體)

★★★现在怎么让JSP无论显示繁简都正确呢?
...全文
177 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
aceplus 2004-09-16
  • 打赏
  • 举报
回复
帮楼猪踢一脚
zyhowe 2004-09-11
  • 打赏
  • 举报
回复
!
zyhowe 2004-09-10
  • 打赏
  • 举报
回复
again!
zyhowe 2004-09-09
  • 打赏
  • 举报
回复
急啊
朋友别哭 2004-09-08
  • 打赏
  • 举报
回复
up
zyhowe 2004-09-08
  • 打赏
  • 举报
回复
up
aceplus 2004-09-08
  • 打赏
  • 举报
回复
2个方案:
1 将<param-name>encoding</param-name>
<param-value>gb2312</param-value>
改为UTF-8试一下

2 用这个函数转一下:
public String chtoString(String chs)
throws Exception
{

String temp = new String(chs.getBytes("GBK"),"ISO8859_1");
return temp;
}
public String StringtoChar(String chs)
throws Exception
{
String temp = new String(chs.getBytes("ISO8859_1"),"GBK");
return temp;
}
yujiabian 2004-09-08
  • 打赏
  • 举报
回复
呵呵,mark!
aceplus 2004-09-08
  • 打赏
  • 举报
回复
数据库里面没法改,其他都统统改为GBK18030

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧