求简体和繁体共存的解决方法

lmh7607 2003-08-22 03:24:09
系统框架:struts
运行环境:windows2000 professor 繁体版
数据库sqlserver
目前测试了采用gbk和iso8859-1的编码方式,但都不符合要求;
或许是在哪儿设错了。以iso8859-1为例;
1):在jsp里加上<%@ page contentType="text/html;charset=ISO8859_1" %>
2):java编译时采用iso8859-1的编码方式
3):数据库url加上iso8859-1
jdbc:inetdae:127.0.0.1:1433?database=xx3&charset=iso8859-1
運行结果是:如果ie的编码方式是繁体,那么所有的繁体中文能显示,而简体中文不行.如果ie的编码方式是简体,那么简体中文能正确显示,而繁体中文不行.

怎么才能让简体和繁体都能正确显示,哪位高人能帮忙。谢谢.
...全文
193 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
javaboy 2003-08-26
  • 打赏
  • 举报
回复
虽然已经结贴,还是补充一下:
客户端输入时通过字符是难以判断简体和繁体的。
可以通过获得浏览器的语言版本、操作系统版本、以及HTTP头的CHARSET来判断是简体还是繁体。
pokar 2003-08-25
  • 打赏
  • 举报
回复
每个 jsp页面加上:

response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");

每个 servlet 中加上:
HttpServletResponse.setContentType("text/html;charset=UTF-8");
HttpServletRequest.setCharacterEncoding("UTF-8");

lmh7607 2003-08-25
  • 打赏
  • 举报
回复
更正:
需要說明的是:
數據庫url我去除了charset.
jdbc:inetdae:127.0.0.1:1433?database=xx3.

lmh7607 2003-08-25
  • 打赏
  • 举报
回复
樓上的你好,謝謝你了。
但我還是不太明白。所以還得請你幫忙;
你說:
假设GB->UNICODE的处理方法为U1(), BIG5->UNICODE的处理方法为U2().
我怎麼知道客戶是否是用的GB,還是用的big5.
比如,現在我自幾的機器,繁體的操作系統。我要測試簡體的化,我就copy一段進行輸入.
結果肯定是亂碼了.
現在還有一個小問題.
如果在網頁中加入刪除下面這句:
<meta http-equiv="Content-Type" content="text/html; charset=ISO8859_1">
輸入繁體能正常保存.輸入簡體的話,如果該簡體字在繁體字當中存在的話,就能
正確保存,如果不存在就變成亂碼了.
如果進行保留,就只能保存繁體.
需要說明的是:
數據庫url我去除了charset.
数据库url加上iso8859-1
jdbc:inetdae:127.0.0.1:1433?database=xx3.

具體該如何做?謝謝你!






lmh7607 2003-08-25
  • 打赏
  • 举报
回复
如果采用GBK編碼方式,簡體字和繁體字是可以共存,但是,有的繁體字是亂碼,
有的是正常。這是為什麼?
Frank_Xu 2003-08-25
  • 打赏
  • 举报
回复
頂一下,我也想知道怎樣實現.
javaboy 2003-08-22
  • 打赏
  • 举报
回复
你混淆了一些概念。依你开头所说,那么可以肯定的是你的简体是GBK编码的,繁体是BIG5编码的,不要以为设了ISO8859_1后,就会统一成ISO8859_1,转来转去,实际并没有统一到一种编码,最终还是两种编码。
这样说明:
GB="简体"
BIG5="繁体";
你做的编译、数据库设置等等的输入部分的过程可以用f(x)表示,输出可以用g(x)表示,是f(x)的反过程。
那么输入和输出GB的情况是:GB->f(GB)->g(f(GB))-=> GB,假设GB的编码是a0a1经过一系列处理后,输入编码仍是a0a1.
输入和输出BIG5的情况是:Big5->f(BIG5)->g(f(GB))--> BIG5, 假设BIG5的编码是B3B4,经过一系列过程后,出来的编码还是B3B4。
也就是说,由于输入后到输出的处理过程是一致的,那么进去什么编码出来还是什么编码,尽管你设置了iso8859_1,实际一进一出抵销了,出来还是原先的GBK编码或者BIG5编码,所以这时候你用IE选择简体字可以看到简体但看不到繁体。

那么如何做到共同显示呢?
假设GB->UNICODE的处理方法为U1(), BIG5->UNICODE的处理方法为U2(),
那么应该这样处理:
GB->U1(GB)->其它相同->输出时将是U1(GB)
BIG5->U2(BIG5)->其它相同->输出时将U2(Big5)
这时输出的都是UNICODE编码,只需设置正确的CHARSET即可同时显示UNICODE编码的简繁体汉字。
也就是说输入时,要先将输入的GBK简体字和BIG5繁体字用不同的相对应的转换方法转为共同的UNICODE保存,取出时,用UNICODE显示,这时才能实现简繁体共同显示。
lmh7607 2003-08-22
  • 打赏
  • 举报
回复
我想說一下,如果用簡體的操作系統去做,是完全可以的。
但繁體的就好象不行.
也許是我做得不對.
lmh7607 2003-08-22
  • 打赏
  • 举报
回复
樓上的你好,應該是我說得不對.我指的是第二種情況.
因為jsp肯定只能指定一種編碼方式.
但無論我使用gbk或iso8859-1的編碼方式去做.運行結果都和我開頭說得一樣.


javaboy 2003-08-22
  • 打赏
  • 举报
回复
这个问题说得不清楚,有以下两种情况:
1、GB编码的简体字和BIG5编码的繁体字在一个页面同时正常显示,答案:不可能
2、同种编码的简体字和繁体字在一个页面同时正常显示,答案:可以用GBK或UNICODE编码,GBK扩展字库有繁体字,UNICODE当然就更好了,不过数据库存取及程序处理方面略麻烦些,主要是维护的可读性不够好。

简繁体都显示似乎实际意义不大,如果你想有双版本的话,倒是可以看看本人的简繁通软件,可实时动态实现一个网站的简繁同时动态发布。作一套简体版即可有繁体版。这样想看简体的看简体版,反之看繁体版。
http://www.xdevelop.net
Wkenny 2003-08-22
  • 打赏
  • 举报
回复
修改Struts包,把那个编码方式改成你想要的就可以了。
bdsc 2003-08-22
  • 打赏
  • 举报
回复
用unicode
lmh7607 2003-08-22
  • 打赏
  • 举报
回复
up一下

81,091

社区成员

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

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