/*
* Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*/
/*
*/
package sun.nio.cs.ext;
import java.nio.CharBuffer;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.nio.charset.CharsetEncoder;
import java.nio.charset.CoderResult;
import sun.nio.cs.HistoricallyNamedCharset;
public class IBM964
extends Charset
implements HistoricallyNamedCharset
{
public IBM964() {
super("x-IBM964", ExtendedCharsets.aliasesFor("x-IBM964"));
}
public String historicalName() {
return "Cp964";
}
public boolean contains(Charset cs) {
return (cs instanceof IBM964);
}
public CharsetDecoder newDecoder() {
return new Decoder(this);
}
public CharsetEncoder newEncoder() {
return new Encoder(this);
}
protected static class Decoder extends CharsetDecoder {
private final int SS2 = 0x8E;
private final int SS3 = 0x8F;
private String mappingTableG2;
public Decoder(Charset cs) {
super(cs, 1.0f, 1.0f);
}
private CoderResult decodeArrayLoop(ByteBuffer src, CharBuffer dst) {
byte[] sa = src.array();
int sp = src.arrayOffset() + src.position();
int sl = src.arrayOffset() + src.limit();
assert (sp <= sl);
sp = (sp <= sl ? sp : sl);
char[] da = dst.array();
int dp = dst.arrayOffset() + dst.position();
int dl = dst.arrayOffset() + dst.limit();
assert (dp <= dl);
dp = (dp <= dl ? dp : dl);
try {
while (sp < sl) {
int byte1, byte2;
int inputSize = 1;
char outputChar = '\uFFFD';
byte1 = sa[sp] & 0xff;
if (byte1 == SS2) {
if (sl - sp < 4) {
return CoderResult.UNDERFLOW;
}
byte1 = sa[sp + 1] & 0xff;
inputSize = 2;
if ( byte1 == 0xa2)
mappingTableG2 = mappingTableG2a2;
else if ( byte1 == 0xac)
mappingTableG2 = mappingTableG2ac;
else if ( byte1 == 0xad)
mappingTableG2 = mappingTableG2ad;
else
return CoderResult.malformedForLength(2);
byte1 = sa[sp + 2] & 0xff;
if ( byte1 < 0xa1 || byte1 > 0xfe) {
return CoderResult.malformedForLength(3);
}
byte2 = sa[sp + 3] & 0xff;
if ( byte2 < 0xa1 || byte2 > 0xfe) {
return CoderResult.malformedForLength(4);
}
inputSize = 4;
outputChar = mappingTableG2.charAt(((byte1 - 0xa1) * 94) + byte2 - 0xa1);
} else if(byte1 == SS3 ) {
return CoderResult.malformedForLength(1);
} else if ( byte1 <= 0x9f ) { // valid single byte
outputChar = byteToCharTable.charAt(byte1);
} else if (byte1 < 0xa1 || byte1 > 0xfe) { // invalid range?
return CoderResult.malformedForLength(1);
} else { // G1
if (sl - sp < 2) {
return CoderResult.UNDERFLOW;
}
byte2 = sa[sp + 1] & 0xff;
inputSize = 2;
if ( byte2 < 0xa1 || byte2 > 0xfe) {
return CoderResult.malformedForLength(2);
}
outputChar = mappingTableG1.charAt(((byte1 - 0xa1) * 94) + byte2 - 0xa1);
}
if (outputChar == '\uFFFD')
return CoderResult.unmappableForLength(inputSize);
if (dl - dp < 1)
return CoderResult.OVERFLOW;
da[dp++] = outputChar;
sp += inputSize;
}
return CoderResult.UNDERFLOW;
} finally {
src.position(sp - src.arrayOffset());
dst.position(dp - dst.arrayOffset());
}
}
private CoderResult decodeBufferLoop(ByteBuffer src, CharBuffer dst) {
int mark = src.position();
try {
while (src.hasRemaining()) {
int byte1, byte2;
int inputSize = 1;
char outputChar = '\uFFFD';
byte1 = src.get() & 0xff;
if (byte1 == SS2) {
if (src.remaining() < 3)
return CoderResult.UNDERFLOW;
byte1 = src.get() & 0xff;
inputSize = 2;
if ( byte1 == 0xa2)
mappingTableG2 = mappingTableG2a2;
else if ( byte1 == 0xac)
mappingTableG2 = mappingTableG2ac;
else if ( byte1 == 0xad)
mappingTableG2 = mappingTableG2ad;
else
return CoderResult.malformedForLength(2);
byte1 = src.get() & 0xff;
if ( byte1 < 0xa1 || byte1 > 0xfe)
return CoderResult.malformedForLength(3);
byte2 = src.get() & 0xff;
if ( byte2 < 0xa1 || byte2 > 0xfe)
return CoderResult.malformedForLength(4);
inputSize = 4;
outputChar = mappingTableG2.charAt(((byte1 - 0xa1) * 94) + byte2 - 0xa1);
} else if (byte1 == SS3 ) {
return CoderResult.malformedForLength(1);
} else if ( byte1 <= 0x9f ) { // valid single byte
outputChar = byteToCharTable.charAt(byte1);
} else if (byte1 < 0xa1 || byte1 > 0xfe) { // invalid range?
return CoderResult.malformedForLength(1);
} else { // G1
if (src.remaining() < 1)
return CoderResult.UNDERFLOW;
byte2 = src.get() & 0xff;
if ( byte2 < 0xa1 || byte2 > 0xfe) {
return CoderResult.malformedForLength(2);
}
inputSize = 2;
outputChar = mappingTableG1.charAt(((byte1 - 0xa1) * 94) + byte2 - 0xa1);
}
if (outputChar == '\uFFFD')
return CoderResult.unmappableForLength(inputSize);
if (!dst.hasRemaining())
return CoderResult.OVERFLOW;
dst.put(outputChar);
mark += inputSize;
}
return CoderResult.UNDERFLOW;
} finally {
src.position(mark);
}
}
protected CoderResult decodeLoop(ByteBuffer src, CharBuffer dst) {
if (true && src.hasArray() && dst.hasArray())
return decodeArrayLoop(src, dst);
else
return decodeBufferLoop(src, dst);
}
private final static String byteToCharTable;
private final static String mappingTableG1;
private final static String mappingTableG2a2;
private final static String mappingTableG2ac;
private final static String mappingTableG2ad;
static {
没有合适的资源?快使用搜索试试~ 我知道了~
java 11 下载 ,集中统一下载 避免各个地方下载
共17367个文件
java:17367个
需积分: 1 0 下载量 132 浏览量
2022-11-01
15:35:56
上传
评论
收藏 153.89MB RAR 举报
温馨提示
java 11 下载 ,集中统一下载 避免各个地方下载
资源推荐
资源详情
资源评论
收起资源包目录
java 11 下载 ,集中统一下载 避免各个地方下载 (17367个子文件)
IBM964.java 863KB
GB18030.java 746KB
EUC_TWMapping.java 618KB
IBM33722.java 600KB
CachedRowSetImpl.java 430KB
Character.java 416KB
JDWP.java 404KB
Arrays.java 392KB
Component.java 381KB
JTable.java 373KB
MethodHandles.java 325KB
CompilerProperties.java 308KB
JdbcRowSetImpl.java 293KB
AccessBridge.java 280KB
ConcurrentHashMap.java 259KB
CodeGenerator.java 235KB
BigDecimal.java 229KB
BytecodeParser.java 228KB
Attr.java 222KB
Pattern.java 220KB
DateTimeFormatterBuilder.java 217KB
SyncResolverImpl.java 215KB
Collections.java 213KB
BaseRowSet.java 210KB
JComponent.java 210KB
JTree.java 207KB
Parser.java 206KB
IBM1364.java 204KB
ResultSet.java 203KB
Resolve.java 202KB
JoinRowSetImpl.java 201KB
BidiBase.java 200KB
XSDHandler.java 200KB
IBM933.java 199KB
Formatter.java 198KB
TimeZoneNames_ccp.java 196KB
IBM950.java 195KB
MS950.java 192KB
PluginFactory_HotSpotReplacementsUtil.java 192KB
MS936.java 192KB
GBK.java 192KB
Types.java 192KB
MS949.java 191KB
Container.java 189KB
JTextComponent.java 189KB
XMLSchemaValidator.java 189KB
Main.java 187KB
Johab.java 185KB
AMD64MathIntrinsicUnaryOp.java 185KB
NimbusDefaults.java 181KB
Files.java 180KB
DecimalFormat.java 177KB
BasicTreeUI.java 176KB
IBM937.java 176KB
IBM948.java 175KB
BigInteger.java 171KB
HTMLDocument.java 166KB
BasicTabbedPaneUI.java 163KB
ResourceBundle.java 163KB
Class.java 162KB
JavacParser.java 162KB
XPathParser.java 161KB
DatabaseMetaData.java 159KB
AMD64Assembler.java 159KB
SunFontManager.java 158KB
Check.java 158KB
HKSCSMapping.java 155KB
ObjectInputStream.java 153KB
HKSCS2001Mapping.java 152KB
Lower.java 151KB
compiler_ja.java 151KB
Window.java 151KB
JShellTool.java 147KB
TimeZoneNames_uk.java 145KB
JList.java 144KB
LocaleNames_ccp.java 144KB
AffineTransform.java 143KB
TIFFImageWriter.java 143KB
HttpURLConnection.java 143KB
RelationService.java 142KB
Locale.java 141KB
XSSimpleTypeDecl.java 141KB
Calendar.java 140KB
Unsafe.java 140KB
TimeZoneNames_km.java 140KB
GroupLayout.java 140KB
ConsoleReader.java 139KB
TimeZoneNames_hy.java 137KB
TimeZoneNames_ml.java 137KB
Big5.java 137KB
TimeZoneNames_mk.java 137KB
TimeZoneNames_my.java 136KB
ForkJoinPool.java 136KB
TimeZoneNames_bg.java 136KB
CollationData_zh_TW.java 135KB
ScriptObject.java 135KB
URI.java 134KB
SunGraphics2D.java 134KB
TimeZoneNames_ta.java 134KB
COFFFileParser.java 133KB
共 17367 条
- 1
- 2
- 3
- 4
- 5
- 6
- 174
资源评论
a503424551
- 粉丝: 0
- 资源: 22
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 3122080306 邹子轩 实验报告二.docx
- 基于STM32 NUCLEO板设计彩色LED照明灯(纯cubeMX开发)(大赛作品,文档完整,可直接运行)
- 发那科工业机器人保养大全
- Sphere.h
- REMD固有时间尺度分解信号分量可视化(Matlab完整源码和数据)
- 嵌入式系统双单片机STC89C52+STC15W104多功能学习板电路图可扩展 适用于单片机初学者和教学
- 基于STM32蓝牙控制小车系统设计(硬件+源代码+论文)大赛作品
- XILINXFPGA源码基于Spartan3火龙刀系列FPGA开发板VGA测试例程
- Java聊天室的设计与实现【尚学堂·百战程序员】
- python中matplotlib教程
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功