- From: Glenn Maynard <glenn@zewt.org>
- Date: Thu, 22 Mar 2012 08:47:05 -0500
On Wed, Mar 21, 2012 at 2:42 PM, Anne van Kesteren <annevk at opera.com> wrote: > As for the API, how about: > > enc = new Encoder("euc-kr") > string1 = enc.encode(bytes1) > string2 = enc.encode(bytes2) > string3 = enc.eof() // might return empty string if all is fine > A problem with this is that the bugs resulting from not calling eof() are subtle. The only thing eof() would ever do, I think, is return U+FFFD characters if there are leftover characters in the internal buffer; if you never call eof(), you'll never get incorrect results unless you test with invalid inputs. It's minor, as subtle-edge-cases-that-people-won't-get-right go, but it's at least worth a mention. Maybe people who would use this API instead of the simpler non-streaming version (which could be a thin wrapper on this) in the first place are also more likely to get this right. I'm guessing a common, incorrect pattern would be: string = new Encoder("euc-kr").encode(bytes); which would *not* be equivalent to bytes.encode("euc-kr"). -- Glenn Maynard
Received on Thursday, 22 March 2012 06:47:05 UTC