Re: Image to Text
Knute Johnson wrote:
Lew wrote:
(Beware: Strings are terrible homes for binary data because they have
text character encoding.)
If it is encoding you want, use Base64 encoding. That produces byte
arrays as output, from which you can build Strings. Yecch.
Make sure to specify the character encoding for your Strings (e.g.,
"ASCII"), and that it's the same on both ends of your code/decode
actions. Strings are a terrible way to store binary data.
<http://jakarta.apache.org/commons/codec/>
Lew:
How do they code public/private keys into ASCII text? That's got to be
able to handle all 256 values. Does that have a name?
That's what Base64 does. It maps all binary values into a byte encoding
scheme that works for ASCII Strings.
From
<http://en.wikipedia.org/wiki/Base64encoded>
Base64 or quadrosexagesimal is a positional notation using a base of 64. It is the largest power-of-two base that can be represented using only printable ASCII characters.
It uses an offset, so the six-bit value 0 is 'A', 1 is 'B', the digit 26 is
'a', digit 61 is '9', It is similar to uu{en|de}code in that it represents
every binary value as a series of characters representing base 64 (6-bit)
digits. It's similar to how we use hex notation to represent base 16 (4-bit)
chunks using printable characters.
So yes, Base64 is one encoding that handles all possible binary values,
converting them to printable ASCII characters. I feel these are the safest to
use when you must use a String to hold binary data.
See also:
<http://jakarta.apache.org/commons/codec/userguide.html>
<http://www.ietf.org/rfc/rfc2045.txt>
--
Lew