Re: Do you know how Java read character value greater than 128/255?
"Mike Schilling" <mscottschilling@hotmail.com> wrote in message
news:53Yfh.30140$wP1.8682@newssvr14.news.prodigy.net...
"Oliver Wong" <owong@castortech.com> wrote in message
news:BFXfh.75354$aJ6.667154@wagner.videotron.net...
"RC" <raymond.chui@nospam.noaa.gov> wrote in message
news:elp6m5$riu$1@news.nems.noaa.gov...
But in C I don't get print any character ASCII value greater than 128 by
read the same file.
I just wonder why, how do Java read those character ASCII greater
than 128?
I think it's basically because C uses ASCII internally, while Java
uses a modified version of UTF-16 internally.
It's because the C code shown was reading bytes, while the Java code shown
was reading characters. Java that reads bytes, e.g.
InputStream strm;
int b = strm.read();
would never see anything outside the range [-128..127], while C that reads
"wide" characters, e.g.
wint_t c = getwc(stdin);
can see characters outside that range.
I was referring to the language-built-in datatypes known as "char" in C
and "char" in Java. Both languages seem to assume that there is a finite
number of characters that will ever used in computing (256 in the case of C,
65536 in the case of Java), and when they were shown wrong, libraries needed
to be added to support the extra characters.
The OQ (Original Question) was informally phrased (e.g. contrasting C's
printing versus Java's reading -- I would further argue that Java doesn't
"read" characters at all in this scenario, but instead reads bytes, and then
does some behind the scenes conversions to characters), so I was sort of
guessing at what the OP was really asking.
- Oliver