Normalizing an unknown filehandle encoding to utf8

[email protected] ("Napiorkowski, John")
Newsgroups perl.unicode
Message-ID <[email protected]>
Hi,

 

I'm trying to normalize a filehandle of unknown encoding to UTF8.  There is a lot of documentation about changing/converting data formats but nothing I've tried works.  Here is my problem and what I tried to do to solve it.

 

I have a form upload which is allowing my clients to upload address books in different formats.  Quite a few people are trying to upload LDIF files exported from MS Outlook and often there are internationalized characters in the windows-1252 character set.  Here is an example of what I mean:

 

Bjørn Stabel

 

I have a file handle for the upload filed (it's an IO::File object) and I thought I could force the filehandle to convert itself to UTF-8 'on the fly' based on some of the examples and readings I've done in the various PerlIO and encoding man pages.  However nothing I do seems to work.  Here's what I've tried:

 

(Assume $fh) is the IO::File object

 

binmode ($fh, ":utf8")  or die "trouble $!";

binmode ($fh, ":encoding(utf8)" ) or die "trouble $!";

 

Now I can't use 'encoding(latin1)' because only some files are encoded this way.

 

I run into trouble when I try to insert fields from the addressbook into my UTF8 Postgresql database.  Right now I can fix it with encode_utf8(...) but I have to use that on every single recovered values that gets inserted into the database, so it really seems like an ugly workaround.

 

Isn't there some way to normalize a filehandle of unknown uncoding to UTF-8?  All the examples I see seem to suggest this is possible, but I just can't make it work.

 

Thank you for your suggestions,

 

John Napiorkowski
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.