| java.lang.Object sun.io.CharToByteConverter sun.io.CharToByteISO8859_1
All known Subclasses: sun.awt.pocketpc.PPCDefaultFontCharset,
Method Summary | |
public boolean | canConvert(char ch) This method is changed to a CNI method
for performance purpose.
public int convert(char[] input, int inOff, int inEnd,
byte[] output, int outOff, int outEnd)
throws MalformedInputException,
UnknownCharacterException,
ConversionBufferFullException
{
char inputChar; // Input character to be converted
int outputSize; // Size of output
// Record beginning offsets
charOff = inOff;
byteOff = outOff;
if (highHalfZoneCode != 0) {
highHalfZoneCode = 0;
if (input[inOff] >= 0xdc00 && input[inOff] <= 0xdfff) {
// This is legal UTF16 sequence.
if (subMode) {
outputSize = subBytes.length;
if (byteOff + outputSize > outEnd)
throw new ConversionBufferFullException();
System.arraycopy(subBytes, 0, output, byteOff, outputSize);
byteOff += outputSize;
charOff += 1;
} else {
badInputLength = 1;
throw new UnknownCharacterException();
}
} else {
// This is illegal UTF16 sequence.
badInputLength = 0;
throw new MalformedInputException
("Previous converted string ends with " +
" of UTF16 " +
", but this string is not begin with ");
}
}
// Loop until we hit the end of the input
while(charOff < inEnd) {
// Get the input character
inputChar = input[charOff];
// Is this character mappable?
if (inputChar <= '\u00FF') {
if (byteOff + 1 > outEnd)
throw new ConversionBufferFullException();
output[byteOff++] = (byte)inputChar;
charOff += 1;
}
// Is this a high surrogate?
else if(inputChar >= '\uD800' && inputChar <= '\uDBFF') {
// Is this the last character in the input?
if (charOff + 1 == inEnd) {
highHalfZoneCode = inputChar;
break;
}
// Is there a low surrogate following?
inputChar = input[charOff + 1];
if (inputChar >= '\uDC00' && inputChar <= '\uDFFF') {
// We have a valid surrogate pair. | native public int | convert(char[] input, int inOff, int inEnd, byte[] output, int outOff, int outEnd) | public int | flush(byte[] output, int outStart, int outEnd) | public String | getCharacterEncoding() | public int | getMaxBytesPerChar() | public void | reset() |
canConvert | public boolean canConvert(char ch)(Code) | | This method is changed to a CNI method
for performance purpose.
public int convert(char[] input, int inOff, int inEnd,
byte[] output, int outOff, int outEnd)
throws MalformedInputException,
UnknownCharacterException,
ConversionBufferFullException
{
char inputChar; // Input character to be converted
int outputSize; // Size of output
// Record beginning offsets
charOff = inOff;
byteOff = outOff;
if (highHalfZoneCode != 0) {
highHalfZoneCode = 0;
if (input[inOff] >= 0xdc00 && input[inOff] <= 0xdfff) {
// This is legal UTF16 sequence.
if (subMode) {
outputSize = subBytes.length;
if (byteOff + outputSize > outEnd)
throw new ConversionBufferFullException();
System.arraycopy(subBytes, 0, output, byteOff, outputSize);
byteOff += outputSize;
charOff += 1;
} else {
badInputLength = 1;
throw new UnknownCharacterException();
}
} else {
// This is illegal UTF16 sequence.
badInputLength = 0;
throw new MalformedInputException
("Previous converted string ends with " +
" of UTF16 " +
", but this string is not begin with ");
}
}
// Loop until we hit the end of the input
while(charOff < inEnd) {
// Get the input character
inputChar = input[charOff];
// Is this character mappable?
if (inputChar <= '\u00FF') {
if (byteOff + 1 > outEnd)
throw new ConversionBufferFullException();
output[byteOff++] = (byte)inputChar;
charOff += 1;
}
// Is this a high surrogate?
else if(inputChar >= '\uD800' && inputChar <= '\uDBFF') {
// Is this the last character in the input?
if (charOff + 1 == inEnd) {
highHalfZoneCode = inputChar;
break;
}
// Is there a low surrogate following?
inputChar = input[charOff + 1];
if (inputChar >= '\uDC00' && inputChar <= '\uDFFF') {
// We have a valid surrogate pair. Too bad we don't map
// surrogates. Is substitution enabled?
if (subMode) {
outputSize = subBytes.length;
if (byteOff + outputSize > outEnd)
throw new ConversionBufferFullException();
System.arraycopy(subBytes, 0, output, byteOff, outputSize);
byteOff += outputSize;
charOff += 2;
} else {
badInputLength = 2;
throw new UnknownCharacterException();
}
} else {
// We have a malformed surrogate pair
badInputLength = 1;
throw new MalformedInputException();
}
}
// Is this an unaccompanied low surrogate?
else if (inputChar >= '\uDC00' && inputChar <= '\uDFFF') {
badInputLength = 1;
throw new MalformedInputException();
}
// Unmappable and not part of a surrogate
else {
// Is substitution enabled?
if (subMode) {
outputSize = subBytes.length;
if (byteOff + outputSize > outEnd)
throw new ConversionBufferFullException();
System.arraycopy(subBytes, 0, output, byteOff, outputSize);
byteOff += outputSize;
charOff += 1;
} else {
badInputLength = 1;
throw new UnknownCharacterException();
}
}
}
// Return the length written to the output buffer
return byteOff-outOff;
}
|
getCharacterEncoding | public String getCharacterEncoding()(Code) | | |
getMaxBytesPerChar | public int getMaxBytesPerChar()(Code) | | returns the maximum number of bytes needed to convert a char
|
reset | public void reset()(Code) | | |
Methods inherited from sun.io.CharToByteConverter | public boolean canConvert(char c)(Code)(Java Doc) abstract public int convert(char[] input, int inStart, int inEnd, byte[] output, int outStart, int outEnd) throws MalformedInputException, UnknownCharacterException, ConversionBufferFullException(Code)(Java Doc) public byte[] convertAll(char input) throws MalformedInputException(Code)(Java Doc) public int convertAny(char[] input, int inStart, int inEnd, byte[] output, int outStart, int outEnd) throws ConversionBufferFullException(Code)(Java Doc) abstract public int flush(byte[] output, int outStart, int outEnd) throws MalformedInputException, ConversionBufferFullException(Code)(Java Doc) public int flushAny(byte[] output, int outStart, int outEnd) throws ConversionBufferFullException(Code)(Java Doc) public int getBadInputLength()(Code)(Java Doc) abstract public String getCharacterEncoding()(Code)(Java Doc) public static CharToByteConverter getConverter(String encoding) throws UnsupportedEncodingException(Code)(Java Doc) public static CharToByteConverter getDefault()(Code)(Java Doc) abstract public int getMaxBytesPerChar()(Code)(Java Doc) public int nextByteIndex()(Code)(Java Doc) public int nextCharIndex()(Code)(Java Doc) abstract public void reset()(Code)(Java Doc) public void setSubstitutionBytes(byte[] newSubBytes) throws IllegalArgumentException(Code)(Java Doc) public void setSubstitutionMode(boolean doSub)(Code)(Java Doc) public String toString()(Code)(Java Doc)
|
|
|