/[classpath]/classpath/gnu/java/io/encode/EncoderUTF8.java
ViewVC logotype

Diff of /classpath/gnu/java/io/encode/EncoderUTF8.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.7 by mark, Fri Apr 23 22:36:45 2004 UTC revision 1.7.2.1 by gnu_andrew, Sun Jan 16 02:14:45 2005 UTC
# Line 86  bytesInCharArray(char[] buf, int offset, Line 86  bytesInCharArray(char[] buf, int offset,
86          ++num_bytes;          ++num_bytes;
87        else if (buf[i] <= 0x07FF)        else if (buf[i] <= 0x07FF)
88          num_bytes += 2;          num_bytes += 2;
89        else        else if (buf[i] < 0xD800 || buf[i] > 0xDFFF)
90          num_bytes += 3;          num_bytes += 3;
91          else if (buf[i] < 0xDC00
92                && i + 1 < offset + len
93                && buf[i + 1] >= 0xDC00
94                && buf[i + 1] <= 0xDFFF)
95            {
96              num_bytes += 4;
97              i++;
98            }
99          else
100            num_bytes += 1;
101      }      }
102    
103    return(num_bytes);    return(num_bytes);
# Line 116  convertToBytes(char[] buf, int buf_offse Line 126  convertToBytes(char[] buf, int buf_offse
126            bbuf[bbuf_offset] = (byte)(0x80 | (buf[i] & 0x3F));            bbuf[bbuf_offset] = (byte)(0x80 | (buf[i] & 0x3F));
127            ++bbuf_offset;            ++bbuf_offset;
128          }          }
129        else        else if (buf[i] < 0xD800 || buf[i] > 0xDFFF)
130          {          {
131            bbuf[bbuf_offset] = (byte)(0xE0 | ((buf[i] >> 12) & 0x0F));            bbuf[bbuf_offset] = (byte)(0xE0 | ((buf[i] >> 12) & 0x0F));
132            ++bbuf_offset;            ++bbuf_offset;
# Line 125  convertToBytes(char[] buf, int buf_offse Line 135  convertToBytes(char[] buf, int buf_offse
135            bbuf[bbuf_offset] = (byte)(0x80 | (buf[i] & 0x3F));            bbuf[bbuf_offset] = (byte)(0x80 | (buf[i] & 0x3F));
136            ++bbuf_offset;            ++bbuf_offset;
137          }          }
138          else if (buf[i] < 0xDC00
139                     && i + 1 < buf_offset + len
140                     && buf[i + 1] >= 0xDC00
141                     && buf[i + 1] <= 0xDFFF)
142            {
143              int ch = 0x10000 + ((buf[i] & 0x3FF) << 10) + (buf[i + 1] & 0x3FF);
144              bbuf[bbuf_offset] = (byte)(0xF0 | ((ch >> 18) & 0x07));
145              ++bbuf_offset;
146              bbuf[bbuf_offset] = (byte)(0x80 | ((ch >> 12) & 0x3F));
147              ++bbuf_offset;
148              bbuf[bbuf_offset] = (byte)(0x80 | ((ch >> 6) & 0x3F));
149              ++bbuf_offset;
150              bbuf[bbuf_offset] = (byte)(0x80 | (ch & 0x3F));
151              ++bbuf_offset;
152              i++;
153            }
154          else
155            {
156              // We've got an illegal half of a surrogate pair.
157              bbuf[bbuf_offset] = (byte)'?';
158              ++bbuf_offset;
159            }
160      }      }
161    
162    return(bbuf);    return(bbuf);

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.7.2.1

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26