|
7 | 7 |
|
8 | 8 | // Google closure compiler cannot handle Clazz.new or Clazz.super |
9 | 9 |
|
| 10 | +// BH 1/3/2019 3.2.4.06 adds ByteBuffer/CharBuffer support, proper CharSet encoding, including GBK (Standard Chinese) |
10 | 11 | // BH 12/30/2018 3.2.4.05 adds Class.forName("[XXX") |
11 | 12 | // BH 12/20/2018 3.2.4.05 fixes synthetic reference issue |
12 | 13 | // BH 12/13/2018 3.2.4.05 fixes Class.js field reflection, inner anonymous class of outer class creates wrong synthetic pointer |
@@ -113,8 +114,8 @@ window["j2s.clazzloaded"] = true; |
113 | 114 | _debugging: false, |
114 | 115 | _loadcore: true, |
115 | 116 | _nooutput: 0, |
116 | | - _VERSION_R: "3.2.4.05", |
117 | | - _VERSION_T: "3.2.4.05", |
| 117 | + _VERSION_R: "3.2.4.06", |
| 118 | + _VERSION_T: "3.2.4.06", |
118 | 119 | }; |
119 | 120 |
|
120 | 121 | ;(function(Clazz, J2S) { |
@@ -4490,26 +4491,30 @@ var getChars = function(s, srcBegin,srcEnd,dst,dstBegin, asBytes){ |
4490 | 4491 | } |
4491 | 4492 | }; |
4492 | 4493 |
|
| 4494 | +//var charset=["utf-8","utf8","us-ascii","iso-8859-1","8859_1","gb2312","gb18030"]; |
| 4495 | +var charset=["utf-8","utf8","us-ascii","iso-8859-1"]; // gb* uses GBK |
4493 | 4496 | sp.getBytes$=sp.getBytes$S=sp.getBytes$java_nio_charset_Charset=function(){ |
4494 | 4497 | var s=this; |
4495 | 4498 | if(arguments.length==1){ |
4496 | | -var cs=arguments[0].toString().toLowerCase(); |
4497 | | -var charset=[ |
4498 | | -"utf-8","utf8","us-ascii","iso-8859-1","8859_1","gb2312","gb18030","gbk" |
4499 | | -]; |
4500 | | -var existed=false; |
4501 | | -for(var i=0;i<charset.length;i++){ |
4502 | | -if(charset[i]==cs){ |
4503 | | -existed=true; |
4504 | | -break; |
4505 | | -} |
4506 | | -} |
4507 | | -if(!existed){ |
4508 | | -throw new java.io.UnsupportedEncodingException(); |
4509 | | -} |
4510 | | -if(cs=="utf-8"||cs=="utf8"){ |
4511 | | -s=Encoding.convert2UTF8(this); |
4512 | | -} |
| 4499 | + var cs=arguments[0].toString().toLowerCase(); |
| 4500 | + var simple=false; |
| 4501 | + for(var i=0;i<charset.length;i++){ |
| 4502 | + if(charset[i]==cs){ |
| 4503 | + simple=true; |
| 4504 | + break; |
| 4505 | + } |
| 4506 | + } |
| 4507 | + if(!simple){ |
| 4508 | + cs = arguments[0]; |
| 4509 | + if (typeof cs == "string") |
| 4510 | + cs = Clazz.loadClass("java.nio.charset.Charset").forName$S(cs); |
| 4511 | + if (!cs) |
| 4512 | + throw new java.io.UnsupportedEncodingException(); |
| 4513 | + return cs.encode$S(this.toString()).toArray$(); |
| 4514 | + } |
| 4515 | + if(cs=="utf-8"||cs=="utf8"){ |
| 4516 | + s=Encoding.convert2UTF8(this); |
| 4517 | + } |
4513 | 4518 | } |
4514 | 4519 | var arrs=[]; |
4515 | 4520 | for(var i=0, ii=0;i<s.length;i++){ |
@@ -4739,12 +4744,18 @@ case 4: |
4739 | 4744 | // String(byte[] ascii, int hibyte, int offset, int count) |
4740 | 4745 |
|
4741 | 4746 | var bytes=arguments[0]; |
4742 | | - var encoding=arguments[3]; |
4743 | | - if(typeof encoding != "number"){ |
4744 | | - // assumes UTF-8 |
| 4747 | + var cs=arguments[3]; |
| 4748 | + if(typeof cs != "number"){ |
4745 | 4749 | var offset=arguments[1]; |
4746 | 4750 | var length=arguments[2]; |
4747 | | - return Encoding.readUTF8Array(bytes, offset, length); |
| 4751 | + if (typeof cs == "string") { |
| 4752 | + if (",utf8,utf-8,utf_8,".indexOf("," + cs + ",") >= 0) |
| 4753 | + return Encoding.readUTF8Array(bytes,offset,length); |
| 4754 | + cs = Clazz.loadClass("java.nio.charset.Charset").forName$S(cs); |
| 4755 | + if (!cs) |
| 4756 | + throw new java.io.UnsupportedEncodingException(); |
| 4757 | + } |
| 4758 | + return cs.decode$BA$I$I(bytes, offset, length).toString(); |
4748 | 4759 | } |
4749 | 4760 | var count=arguments[3]; |
4750 | 4761 | var offset=arguments[2]; |
@@ -4950,6 +4961,22 @@ if (typeof c == "string") |
4950 | 4961 | return (c >= 0x1c && c <= 0x20 || c >= 0x9 && c <= 0xd || c == 0x1680 |
4951 | 4962 | || c >= 0x2000 && c != 0x2007 && (c <= 0x200b || c == 0x2028 || c == 0x2029 || c == 0x3000)); |
4952 | 4963 | }, 1); |
| 4964 | +m$(C$,"isSurrogate$C", function(c) { |
| 4965 | + c = c.charCodeAt(0); |
| 4966 | + return c >= 0xd800 && c < 0xe000; |
| 4967 | + |
| 4968 | +}, 1); |
| 4969 | +m$(C$,"isHighSurrogate$C", function(c) { |
| 4970 | + c = c.charCodeAt(0); |
| 4971 | + return c >= 0xd800 && c < 0xdc00; |
| 4972 | + |
| 4973 | +}, 1); |
| 4974 | +m$(C$,"isLowSurrogate$C", function(c) { |
| 4975 | + c = c.charCodeAt(0); |
| 4976 | + return c >= 0xdc00 && c < 0xe000; |
| 4977 | + |
| 4978 | +}, 1); |
| 4979 | + |
4953 | 4980 | m$(C$,["digit$C$I","digit$I$I"], |
4954 | 4981 | function(c,radix){ |
4955 | 4982 | var i = (typeof c == "string" ? c.charCodeAt(0) : c); |
|
0 commit comments