Java高手請進:如何解決中文顯示亂碼問題(150分)? (100分)

  • 主题发起人 主题发起人 I2003
  • 开始时间 开始时间
是,应该这样写!
 
還是一樣的錯誤,
web.xml在shoe目錄有一個,
是不是還要放到C:/JBuilder7/jakarta-tomcat-3.3.1/webapps/examples/WEB-INF下?
下面是jb自己生成的一個web.xml;
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>mainlet</servlet-name>
<servlet-class>shoe.MainLet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>mainlet</servlet-name>
<url-pattern>/mainlet</url-pattern>
</servlet-mapping>
</web-app>
 
我估計是不是找不到web.xml文件?
因為我在jb中跟蹤web.xml如果在運行中會修改這個文件的,
但是我單獨在tomcat運行好象沒有修改這個文件.
 
你哪个你刚新建的web.xml必须放在你刚建立的shoe下面的web-inf目录下面!
 
笨笨逗:
問題解決了,我不用jb的tomcat,重新裝了一個4.1版,直接拷貝到tomcat/webapps就可以了;
但是我的頁面有的中文顯示亂碼?如何解決,搞好了立刻給你們送分
 
有没有加入这个呢!<%@ page contentType="text/html;
charset=GBK" %>
 
加進去也不行,不知道是不是tomcat的事,我用jb 自已的好象沒有這個問題
 
<%@ page contentType="text/html;charSet=GB2312" import="sars.*,java.sql.*" errorPage="error.jsp"%>
加到文件头
 
我的繁體系統,
用<%@ page contentType="text/html;charSet=BIG5" %>這句話,
有些靜態的中文還是顯示亂碼;動態輸出就可以了,out.print('中國');這名顯示正常;
 
应该是<%@ page language = "java" contentType = "text/html;
charset = gb2312" %>
 
看看这个是否对你有帮助
如果你目前正遭遇到 Java 和中文不兼容的问题,请你注意下面这几点,说不定问题能马
上迎刃而解:

1.检查操作系统设定:先检查你的操作系统,确定国籍语言资料是「Traditio
nal Chinese(Taiwan)」。国籍语言资料的设定会影响 Java 编译器与JRE的判断。我之
前就是因为国籍资料设定不正确,出了一堆 Java 和中文不兼容的怪事。

2.更新 Java 环境版本:改用最新版的 JDK,新版本的 JDK 说不定已经解决你
原有的问题。请注意:某些 Java IDE 所用的编译器和 JRE 是不兼容于中文的(我遇过这
样的情形),你最好能把 Java IDE 的 JDK 指到新版的 JDK。另外,如果数据库取回的资
料是乱码,换别套或者更新 JDBC 驱动程序试试看。
Unicode 与繁体中文编码的互转

虽然 Java 内部完整地使用 Unicode,但是你所使用的操作系统可不见得。以繁体中文版
的 Windows 98 来说,预设的编码方式是 MS950,这是一种兼容于 Big 5的编码方式。字
符串数据从 Windows 一送进 JRE,JRE 的转码系统马上先把字符串编码由 MS950 转成 U
nicode,才能进行处理。字符串资料由 JRE 一送出给 Windows,JRE 的转码系统马上先将
其由 Unicode 转成 MS950,操作系统才能处理。

想知道你的 JDK 或 JRE 会用什么样的编码方式来和操作系统沟通,请执行下面的 Java
程序:

public class ShowNativeEncoding {

public static void main(String[] args) {

String enc = System.getProperty("file.encoding");

System.out.println(enc);

}

}

如果执行结果不是下面的字符串之一,那么你的操作系统国籍语言设定可能就有问题了:


· Big5:这是繁体中文 de facto 标准。

· CNS11643:台湾的官方标准繁体中文编码。

· Cp937:繁体中文加上 6204 个使用者自定的字符

· Cp948:繁体中文版 IBM OS/2 用的编码方式。

· Cp964:繁体中文版 IBM AIX 用的编码方式。

· EUC_TW:台湾的加强版 Unicode。

· ISO2022CN:编码中文的一套标准。

· ISO2022CN_CNS:编码中文的一套标准,繁体版,袭自 CNS11643。

· MS950 或 Cp950:ASCII + Big5,用于台湾和香港的繁体中文 MS Windows操作系统。


· Unicode:有次序记号的 Unicode。次序记号占用两个 byte,如果其值是0xFEFF,表示
使用 big-endian(由大到小)的次序为 Unicode 编码;如果其值是 0xFFFF,表示使用
little-endian(由小到大)的次序为 Unicode 编码。

· UnicodeBig:使用 big-endian(由大到小)的次序为 Unicode 编码。

· UnicodeLittle:使用 little-endian(由小到大)的次序为 Unicode 编码。

· UTF8:使用 UTF-8 为 Unicode 编码。

关于 Big 5 编码,请查阅「CJKV Information Processing」一书的附录 H(O'Reilly出
版)。
 
out.print('中國');這句顯示正常
但是如果我是在一個javabean里面用一個變量str:="顯示" ,然後在jsp里輸出這個變量就有問題了;
out.print(str);
是否在javabean有什麼需要設置?
 
中文都變成了???????
 
你有没有用数据库,或者用request传递参数了呢?
这样的话还需要进行编码方式的转换,通常处理的方式为:
new String( str.getBytes( "编码方式1" ), 编码方式2 )
我通常用的都是:
new String( str.getBytes( "ISO8859-1" ), "gb2312" )
你试试看
你的charset=什么就可以了呢,是Big5吗,还是?
 
我自己搞好了,結貼;
多謝 笨笨逗,yueer;
由於笨笨逗開始已經幫我解決了一個問題所以給分給多點.
 
多人接受答案了。
 
后退
顶部