⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 繁简体(gb=big5)字符串转化的java方式实现 zeal blog - 泽欧里的网络日志.htm

📁 使用java算法实现繁体中文和简体中文的转化
💻 HTM
📖 第 1 页 / 共 5 页
字号:
*/<BR>#define isgb2312head(c) (0xa1&lt;=(uchar)(c) &amp;&amp; 
(uchar)(c)&lt;=0xf7)<BR>#define isgb2312tail(c) (0xa1&lt;=(uchar)(c) &amp;&amp; 
(uchar)(c)&lt;=0xfe)<BR><BR>/* Support for Chinese(GBK) characters */<BR>#define 
isgbkhead(c) (0x81&lt;=(uchar)(c) &amp;&amp; (uchar)(c)&lt;=0xfe)<BR>#define 
isgbktail(c) ((0x40&lt;=(uchar)(c) &amp;&amp; (uchar)(c)&lt;=0x7e) || 
(0x80&lt;=(uchar)(c) &amp;&amp; (uchar)(c)&lt;=0xfe))</DIV>
<DIV>- <B>sailbefore</B> (
<SCRIPT type=text/javascript>
<!--
	var first = 'ma';
	var second = 'il';
	var third = 'to:';
	var address = '&#121;&#117;&#104;&#97;&#110;&#103;&#54;&#49;&#55;';
	var domain = '&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;';
	document.write('<a href="');
	document.write(first+second+third);
	document.write(address);
	document.write('&#64;');
	document.write(domain);
	document.write('" title="email sailbefore">');
	document.write('email<\/a>');
// -->
</SCRIPT>
) 于 2006-10-10 17:41</DIV>
<DIV class=commCont>zeal 您好,谢谢您给我们提供了这么好的文章,上面那个PHP的判断能帮用Java写一下吗,谢谢!</DIV>
<DIV>- <B>zeal</B> (<A title=www.zeali.net/ href="http://www.zeali.net/" 
target=_blank>link</A>) 于 2006-10-12 00:57</DIV>
<DIV class=commCont>中文字符编码格式判断: <A href="http://www.zeali.net/entry/444" 
target=_blank>http://www.zeali.net/entry/444</A> , check it out.</DIV>
<DIV>- <B>sailbefore</B> 于 2006-10-23 11:13</DIV>
<DIV 
class=commCont>Zeal老兄,自从我用您写的MyTest这个类把简体字转成繁体字后觉得很过瘾,所以想把繁体字转成简体字可以打入-gb参数后出现的是一堆问号,这是为什么啊,我记得刚下载下来的时候我好像成功转过一次...</DIV>
<DIV>- <B>sailbefore</B> 于 2006-10-23 11:23</DIV>
<DIV class=commCont>这是我测反回的结果<BR>String [中國] converted into:<BR>[ ??]</DIV>
<DIV>- <B>zeal</B> (<A title=www.zeali.net/ href="http://www.zeali.net/" 
target=_blank>link</A>) 于 2006-10-23 15:05</DIV>
<DIV 
class=commCont>因为这个转换只是gb和big5编码之间的转换。你输入的中國两个字其实应该算是gbk编码而不是big5。你需要传入big5编码的繁体字才会被正确转换。</DIV>
<DIV>- <B>simba</B> (
<SCRIPT type=text/javascript>
<!--
	var first = 'ma';
	var second = 'il';
	var third = 'to:';
	var address = '&#115;&#105;&#109;&#98;&#97;&#46;&#122;&#104;&#97;&#110;&#103;';
	var domain = '&#116;&#111;&#109;&#46;&#99;&#111;&#109;';
	document.write('<a href="');
	document.write(first+second+third);
	document.write(address);
	document.write('&#64;');
	document.write(domain);
	document.write('" title="email simba">');
	document.write('email<\/a>');
// -->
</SCRIPT>
) (<A title=hi.baidu.com/lifethink href="http://hi.baidu.com/lifethink" 
target=_blank>link</A>) 于 2006-11-06 16:55</DIV>
<DIV 
class=commCont>我的系統是基於utf8編碼的,數據庫中的也是utf8格式數據,用這個程序好像找不到對應字,請問如何解決?<BR>多謝zeal 
!</DIV>
<DIV>- <B>zeal</B> (<A title=www.zeali.net/ href="http://www.zeali.net/" 
target=_blank>link</A>) 于 2006-11-06 17:00</DIV>
<DIV class=commCont>请参考本篇日志最后提供的关于" 
PHP下中文编码各种格式间的转换类"的链接.在那篇日志里面有处理utf8格式字符的转换代码,当然是用php来实现的,你可以根据提供的码表去实现对应的java版本。</DIV>
<DIV>- <B>alex</B> 于 2006-12-15 14:20</DIV>
<DIV class=commCont>有一个字 (後)转不过来,请问怎么解决?(谢谢你提供的代码)</DIV>
<DIV>- <B>zeal</B> (<A title=www.zeali.net/ href="http://www.zeali.net/" 
target=_blank>link</A>) 于 2006-12-15 14:56</DIV>
<DIV class=commCont>因为字符对应码表都是手工进行对应的,如果发现有的字符转码不正确或找不到的话,可以使用类里面提供的两个方法 
resetBig5Char / resetGbChar 来把正确的对应关系重新写入码表。</DIV>
<DIV>- <B>tinen</B> (
<SCRIPT type=text/javascript>
<!--
	var first = 'ma';
	var second = 'il';
	var third = 'to:';
	var address = '&#118;&#111;&#111;&#100;&#111;&#111;&#57;&#57;';
	var domain = '&#99;&#105;&#116;&#105;&#122;&#46;&#110;&#101;&#116;';
	document.write('<a href="');
	document.write(first+second+third);
	document.write(address);
	document.write('&#64;');
	document.write(domain);
	document.write('" title="email tinen">');
	document.write('email<\/a>');
// -->
</SCRIPT>
) 于 2007-01-16 14:06</DIV>
<DIV 
class=commCont>谢谢zeal。请问,但是GB-&gt;BIG5似乎不对?BIG5在简体系统中应该显示乱码,中国两个字转换为big5不应该是い瓣吗?而您的程序转换出的是中國。这两字在繁体系统中仍旧是乱码呀!?<BR>PS:不好意思,本人脑袋不太好使,经常会转不过弯,希望您提点下!谢谢=v=</DIV>
<DIV>- <B>zeal</B> (<A title=www.zeali.net/ href="http://www.zeali.net/" 
target=_blank>link</A>) 于 2007-01-16 16:06</DIV>
<DIV class=commCont>这是测试代码为了显示出来便于观察,在显示的时候又通过java getBytes 把 big5 的字符串转化成 统一的 
java unicode 之后再显示了出来。你在实际使用的时候直接把字节数组写入文件或输出,不要再进行转化就可以了。</DIV>
<DIV>- <B>tinen</B> (
<SCRIPT type=text/javascript>
<!--
	var first = 'ma';
	var second = 'il';
	var third = 'to:';
	var address = '&#118;&#111;&#111;&#100;&#111;&#111;&#57;&#57;';
	var domain = '&#99;&#105;&#116;&#105;&#122;&#46;&#110;&#101;&#116;';
	document.write('<a href="');
	document.write(first+second+third);
	document.write(address);
	document.write('&#64;');
	document.write(domain);
	document.write('" title="email tinen">');
	document.write('email<\/a>');
// -->
</SCRIPT>
) 于 2007-01-16 22:19</DIV>
<DIV class=commCont>原来如此!!非常感谢您的详解=v=。受教了。</DIV>
<DIV>- <B>snowtank</B> (
<SCRIPT type=text/javascript>
<!--
	var first = 'ma';
	var second = 'il';
	var third = 'to:';
	var address = '&#115;&#110;&#111;&#119;&#116;&#97;&#110;&#107;';
	var domain = '&#49;&#50;&#54;&#46;&#99;&#111;&#109;';
	document.write('<a href="');
	document.write(first+second+third);
	document.write(address);
	document.write('&#64;');
	document.write(domain);
	document.write('" title="email snowtank">');
	document.write('email<\/a>');
// -->
</SCRIPT>
) (<A title=bbs.365hd.com href="http://bbs.365hd.com/" target=_blank>link</A>) 于 
2007-01-18 09:24</DIV>
<DIV class=commCont>Zeal我刚刚测试了一下,gb2big5是可以的,但是big52gb确转换不正确<BR>代码如下<BR>String 
str5 = new 
String(GB2Big5.getInstance().big52gb("天天互動"),"GBK");<BR>System.out.println(str5);<BR>请赐教,谢谢</DIV>
<DIV>- <B>zeal</B> (<A title=www.zeali.net/ href="http://www.zeali.net/" 
target=_blank>link</A>) 于 2007-01-18 09:40</DIV>
<DIV class=commCont>和上面 tinen 说的是同一个问题,“天天互動”其实已经不是 big5 的字符而是 unicode 
的了。你在使用big52gb的时候需要提供的是类似 い瓣 这样看不懂的 big5 码字符。</DIV>
<DIV>- <B>snowtank</B> (
<SCRIPT type=text/javascript>
<!--
	var first = 'ma';
	var second = 'il';
	var third = 'to:';
	var address = '&#115;&#110;&#111;&#119;&#116;&#97;&#110;&#107;';
	var domain = '&#49;&#50;&#54;&#46;&#99;&#111;&#109;';
	document.write('<a href="');
	document.write(first+second+third);
	document.write(address);
	document.write('&#64;');
	document.write(domain);
	document.write('" title="email snowtank">');
	document.write('email<\/a>');
// -->
</SCRIPT>
) 于 2007-01-18 16:56</DIV>
<DIV class=commCont>谢谢,我是想把天天互動转换为天天互动,是哪里有错误呢?</DIV>
<DIV>- <B>zeal</B> (<A title=www.zeali.net/ href="http://www.zeali.net/" 
target=_blank>link</A>) 于 2007-01-18 17:40</DIV>
<DIV class=commCont>天天互动 对应的big5码是 ぱぱが笆 ,而不是 天天互動 ,这样说不知道你是否能够理解了。你可以使用我在本文末尾提到的 
中文字符编码格式判断 ( <A href="http://www.zeali.net/entry/444" 
target=_blank>http://www.zeali.net/entry/444</A> ) 一文了解更多关于字符编码的问题。如果你需要的是 GBK 
中的繁体转换到 GBK/GB2312 简体的话,需要相应的码表来完成字符对应的工作。</DIV>
<DIV>- <B>tinen</B> (
<SCRIPT type=text/javascript>
<!--
	var first = 'ma';
	var second = 'il';
	var third = 'to:';
	var address = '&#118;&#111;&#111;&#100;&#111;&#111;&#57;&#57;';
	var domain = '&#99;&#105;&#116;&#105;&#122;&#46;&#110;&#101;&#116;';
	document.write('<a href="');
	document.write(first+second+third);
	document.write(address);
	document.write('&#64;');
	document.write(domain);
	document.write('" title="email tinen">');
	document.write('email<\/a>');
// -->
</SCRIPT>
) 于 2007-01-19 11:12</DIV>
<DIV class=commCont>zeal,请问如果要把简体的unicode同繁体的unicode互相转换该怎么做呢?</DIV>
<DIV>- <B>tinen</B> (
<SCRIPT type=text/javascript>
<!--
	var first = 'ma';
	var second = 'il';
	var third = 'to:';
	var address = '&#118;&#111;&#111;&#100;&#111;&#111;&#57;&#57;';
	var domain = '&#99;&#105;&#116;&#105;&#122;&#46;&#110;&#101;&#116;';
	document.write('<a href="');
	document.write(first+second+third);
	document.write(address);
	document.write('&#64;');
	document.write(domain);
	document.write('" title="email tinen">');
	document.write('email<\/a>');
// -->
</SCRIPT>
) 于 2007-01-22 17:49</DIV>
<DIV class=commCont>zeal,你好,我在繁体的系统中尝试运行你的程序,但是输出全都是?号,这是什么原因?两个table的问题吗?</DIV>
<DIV>- <B>smoke</B> 于 2007-07-20 11:23</DIV>
<DIV 
class=commCont>zeal老大,我用你的方法能把big5=&gt;gbk,但我想不管用户输入繁体big5或简体gbk,都能自动转为简体gbk,或者能自动识别用户输入繁体或简体。怎么办?</DIV>
<DIV>- <B>zeal</B> (<A title=www.zeali.net/ href="http://www.zeali.net/" 
target=_blank>link</A>) <SUP>verified</SUP> 于 2007-07-20 11:59</DIV>
<DIV class=commCont>请参见楼上的一些回复。</DIV>
<DIV>- <B>smoke</B> 于 2007-07-20 12:45</DIV>
<DIV class=commCont>zeal老大,我利用你的转码方法,做了个函数,可以识别用户输入是繁体或简体。终于搞定这个麻烦的东东!谢谢你!</DIV>
<DIV>- <B>zzz</B> 于 2007-08-09 14:16</DIV>
<DIV class=commCont>雜誌的“誌”转换后乱码</DIV>
<DIV>- <B>yakie</B> 于 2007-10-19 10:46</DIV>
<DIV 
class=commCont>楼主的代码我试过了,有两个地方有问题,需要改一下<BR>1,用到GBK的地方,我需要改成GB2312才能工作。<BR>2,所有str.getBytes()方法,都没有传参数进去,这样会导致默认用系统的encoding,如此以来,如public 
byte[] gb2big5(String 
inStr)这个方法,如果在繁体系统下,会导致错误的转换,解决办法是,在此方法里面用str.getBytes("GB2312")来代替。其他str.getBytes()的方法也要指定相应的encoding,这样才能做到平台无关。</DIV>
<DIV>- <B>yakie</B> 于 2007-10-19 10:48</DIV>
<DIV class=commCont>tinen (email) 于 2007-01-22 
17:49<BR>zeal,你好,我在繁体的系统中尝试运行你的程序,但是输出全都是?号,这是什么原因?两个table的问题吗?<BR><BR>我的这个方法可以解决你的问题</DIV>
<DIV>- <B>oldyoungj</B> 于 2007-11-29 17:45</DIV>
<DIV class=commCont>GBK内简繁互转是怎么解决的?麻烦告知</DIV>
<DIV>- <B>squall</B> 于 2008-01-16 14:07</DIV>
<DIV class=commCont>雜誌的“誌” 和 檬面的"檬"字 
转不了<BR><BR>试过用resetGbChar()和resetBig5Char()方法好像没有效果</DIV>
<DIV>- <B>squall</B> 于 2008-01-18 15:41</DIV>
<DIV 
class=commCont>原来是可以用resetGbChar()和resetBig5Char()来更新码表的<BR><BR>之前是用误用了,所以结果好像没有效<BR><BR>PS:如果想这个程序在繁体操作系统时生效的话最好指定一下编码<BR><BR>PS:帮到大忙了,太感谢zeal</DIV>
<DIV>- <B>squall</B> 于 2008-01-18 16:17</DIV>
<DIV 
class=commCont>好像是错觉,有调用reset方法时才有效,还以为它已经写入文件了<BR><BR>(看过文件的日期与当前日期是一致的啊,理论上有进行过写入操作)<BR><BR>,没有调用时还是没效,难道每次都要调用一下reset方法来更新字符??</DIV>
<DIV>- <B>zeal</B> (<A title=www.zeali.net/ href="http://www.zeali.net/" 
target=_blank>link</A>) <SUP>verified</SUP> 于 2008-01-18 17:11</DIV>
<DIV 
class=commCont>如果你用的是zip包的话,需要自己把包解开之后运行reset写入码表之后在把新生成的table文件打包回去。</DIV></DIV>
<SCRIPT language=Javascript>
function entry_comment_ctlent(e){if(isKeyTrigger(e,13,true)){onPostSubmit();}}
var quizNotifyRepeat=0;
function notifyAnswerQuiz(){
	if(quizNotifyRepeat >= 14) return;
	quizNotifyRepeat++;
	var pLayer = $('#antiSpamQuizSpan');
	var pInput = $('#formCommSub').find('input[@name="pblanswer"]');
	pLayer.css({background:'',color:''});
	pInput.css('background','');
	if(quizNotifyRepeat%2) {
		pLayer.css({background:'#EC8132',color:'#FFFFFF'});
		pInput.css('background','#EC8132');
	}
	pLayer = null;pInput = null;
	setTimeout(notifyAnswerQuiz,300);
}
function onPostSubmit(){
var argv = onPostSubmit.arguments;
var argc = onPostSubmit.arguments.length;
var dosubmit = true;
if(argc > 0){
	dosubmit = argv[0];
}

var formname = document.formCommSub;
if(dosubmit && formname.pblanswer.value.length <= 0){
	alert("请先回答页面上的简单算术题以证明您不是机器人:-P");
	formname.pblanswer.focus();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -