function lower_case/upper_case change non ascii char
Imported from http://bugzilla.roxen.com/bugzilla/show_bug.cgi?id=5143
Reported by Eiichiro ITANI, emu@ceres.dti.ne.jp
It looks like lower_case() and upper_case() just set/drop every characters 5th bit of given string, but it's not desired action.
When string contains 8bit character byte stream(for example Japanese EUC), lower_case()/upper_case() may modify strings incorrectly. I checked with hilfe:
> upper_case("\341\341");
(18) Result: "\301\301"
> lower_case("\307\308");
(19) Result: "\347\350"
So, before set/drop 5th bit, pike should check a character is in range 0x41-0x5a or 0x61-0x7a.
...Oops, sorry. I noticed pike is checking 6th bit. But please check 7th bit, too.