\xC2\xA0 is a Unicode non-breaking space encoded into UTF-8. If you decode your UTF-8 string into a native Perl Unicode string (see Encode), and then add the /u modifier to your regular expression, that ought to enable \s to remove non-ASCII whitespace.

I don't work with multi-byte characters or UTF-8 files. But Perl has an amazing ability to deal with these things.

From the open() docs, it could be that all you need to do is open the file in the right encoding mode and that could enable even Perl 5.10.X to work. I don't know for sure, but this idea is worth a try.

It does not strip whitespace inside quotation, but only surrounding sep_char:

allow_whitespace
When this option is set to true, whitespace (TAB's and SPAC+E's)
surrounding the separation character is removed when parsin+g. If
either TAB or SPACE is one of the three major characters
"sep_char", "quote_char", or "escape_char" it will not be
considered whitespace.

Just a point to help you in the future. Does your editor allow you to view your files in Hex? You could easily see that "Whitespace" is not a space and is really a character. This will save you hours of hair pulling.