That's part of the issue you see. Some codecs like UTF16 are full double byte (or wide) so even the english text is modified. UTF 8 and sjis have the base ascii part the same (single byte) then go DBCS when the first byte is above 127 (to put it simply).
One of the challenges when dealing with these things is that there's a lot of conversion going on that you don't see. if you copy text out of a unicode app and paste it into a non unicode app it's translated. If you copy kanji out of a unicode app and paste in an older style japanese app then it will change to shiftjis with completely different byte values even though none of the programs involved wrote any logic to do this.
In translating these things, it always tends to look like you are working with the same data but you aren't. Input is one thing, the app type or compilation is another, the database engine is another and the data in the database is yet another (sometime OS is yet another). If these things don't match then the data in the search form the user doesn't match the data in the database and nothing (correct) gets returned.
Generally you try to keep it as simple as possible, choose a standard and stick with it from start to finish.
For me personally, I've dealt with unicode functions a bit but I used to use Powerbasic which has no unicode compile support so I've not really experienced that. on the other hand I use japanese OS's a lot and sjis is more established standard still even though unicode is getting bigger.
For this project I'm happy with sjis but for learning purposes of using unicode with PB with sqlite I'm still playing with it. It'd be good to get all the bits working cleanly so I can refer to this code in the future when the need pops up. If possible I don't want to use any multibytewidechar API stuff (which I suppose means UTF16, which means getting another import tool... problem is the import tool needs to be a UTF 16 working sqlite pb app which is what isn't working

catch 22)