http://www.perlmonks.org?node_id=755203


in reply to Re^2: Decoding, Encoding string, how to?
in thread Decoding, Encoding string, how to?

I see question marks, but I'm not sure if there's a question in there. You seem to have a good grasp of the concept.

if a want to print using iso-8859-1 it could be possible downgrading

You'd get the right result, at the cost of confusing your readers. You'd be saying you're doing one thing (changing the internal format) while actually doing another (changing the encoding of the string).

I see that it's not representing in the iso-8859-1 charset

Correct, iso-8859-1 cannot encode U+201C. cp1252 can. cp1252 is Microsoft's extension of iso-8859-1. It's a commonly used encoding in the Windows world, which is why U+201C is encountered frequently.

we can check if it's downgradable or not using utf8::downgrade($str, 1)

Indeed. I have used that very code to make sure a sub was only given bytes before calling a function that expects to only get bytes. At the same time, it makes sure the bytes aren't internally encoded as UTF-8. Most XS functions can't handle that (which is really a bug in the XS function).

using Encode::encode the unmapped character is printed as an ? question symbol and not report any notice

How encode handles errors is configurable using its third parameter.