JSP+ORCALE8的多国语言的转换问题!

dragonleon 2002-04-17 03:06:16
我这数据库是日文ORCALE8。0,不支持中文字符的存贮,需求是将页面上输入的中文字符(不仅仅是JIS和GB的交集部分)存入数据库,并能在页面上正常显示。哪位高手有过类似的解决经验,请指教!(在线等候)
...全文
52 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yakuu 2002-05-21
  • 打赏
  • 举报
回复
我用的就是日文操作系统和日文oracle,现在已经解决了各种语言显示的问题,如果需要交流的,请联系taochina@msn.com

简单说一下:
中文问题已经快说烂了。
其实我认为我们编码尽量不要使用getBytes,这样会导致混乱。
具体分析一下,从web browser入手,不编码的话,ie会将form表单的输入以ISO-8859-1进行编码,然后根据web server进行第二次编码,(比如resin默认编码就是iso-8859-1),这样还是ISO-8859-1,然后存入数据库时,默认的编码是和操作系统相同的,简体中文就是GB2312。
这样,如果不作任何设置,存入到数据库中的就是系统编码。
从数据库中取出来的时候,web server会将其转为(以resin为例)ISO-8859-1,所以如果你只需要在jsp的html中设置:
<meta http-equiv="content-type" content="text/html;charset=GB2312">就可以搞定。
关键在于了解每一步的字符都转成什么编码。

请指正。
jetplane 2002-04-23
  • 打赏
  • 举报
回复
此类问题我过去遇到过的。呵呵。。。

提供一个方法。将任何中文字符转成Unicode代码。然后显示时前面加“&#x”,后面加“;”,即如“中”用“中”,其中4E2D为“中”的Unicode码,则在任何编码环境下均能正常显示。

所以,对你的问题,我的方法是:
写一个java Bean,这个Bean 用来将输入的中文转成Unicode码显示模式(如“中”)型的字符码。将此存入你的日文数据库中。显示时直接从数据库中取出就可以了。

javaBean的代码如下:

//将GB2312的中文转为相应的Unicode码显示模式,英文和数字字符不转。
import java.io.Serializable;

public class c2uGB implements java.io.Serializable
{
public c2uGB(){}
public static String toHEXString(byte b)
{
return (""+"0123456789ABCDEF".charAt(0xf&b>>4)+"0123456789ABCDEF".charAt(b&0xF));
}
public String getc2u(String setStr)
{
String szRet="",szRetTmp;
try
{
String str = new String(setStr.getBytes("GB2312"),"GB2312");
byte[] bb=str.getBytes("UTF16");
for(int i=2;i<bb.length;i++)
{
i++;
if(bb[i-1]!=0)
szRetTmp = "&#x" + toHEXString(bb[i-1]) + toHEXString(bb[i]) + ";";
else
szRetTmp = new String(bb,i,1,"GB2312");
szRet = szRet + szRetTmp;
}
}
catch(Exception e)
{
szRet="c2u fail";
e.printStackTrace();
}
return szRet;
}
}

此思路同样适用于“日文/韩文”或“日文/韩文”与“中文”混用的情况。
OK ???

给分吧~~~~~
ckj2018 2002-04-18
  • 打赏
  • 举报
回复
用BLOB字段
dragonleon 2002-04-17
  • 打赏
  • 举报
回复
用户是日文环境,我也没办法。
字节数组怎么存到数据库中去?
ecstar 2002-04-17
  • 打赏
  • 举报
回复
<%@ page contentType="text/html;charset=UTF-8" %> 这条语句对你有用吗?
salute 2002-04-17
  • 打赏
  • 举报
回复
你把得到的中文字符先
byte[] ch=fromStr.getBytes("GBK");
然后将ch以二进制(byte)方式存入数据库.
取出后new String(ch,"GBK")就可以正常显示了.
PS:你为什么不装个中文ORACLE呢?
dragonleon 2002-04-17
  • 打赏
  • 举报
回复
回答对了的话,我把
http://www.csdn.net/expert/topic/523/523629.xml?temp=.106167
http://www.csdn.net/expert/topic/608/608610.xml?temp=.9991724
的分都给你!!!
dragonleon 2002-04-17
  • 打赏
  • 举报
回复
不知道的,想知道的麻烦顶一顶啊!谢谢了!帮忙顶的也有分!

81,090

社区成员

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

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