Regarding your code, this first use of "decode()" does nothing, because there is nothing in the array yet:
So you must have misunderstood what I meant. Anyway, since your script includes use encoding "cp1250"; I gather that you wrote your script with a text editor that saves the file in that encoding. That should be fine, but it means that the quoted strings with accented characters are being treated internally in perl as utf8 strings (because that's what use encoding is supposed to do -- read the output of perldoc encoding).... my @Test; my $Test; @Test=encode("cp1250",@Test); ...
So if you want these characters to be stored in the Excel file as cp1250 characters, I think you need to do your "write" calls like this:
What happens in that case is: (1) your text editor saves the script as a cp1250-encoded text file, (2) when perl.exe reads the script to execute it, it sees use encoding "cp1250" and converts the special characters to its normal internal utf8 encoding (so that "character semantics" will work in the normal way), (3) then when those "write() functions are called, the Encode::encode function turns the utf8 strings back into cp1250 for storage in the Excel file.use Encode; ... $SheetOut->write(0,0, encode( "cp1250", "Čč" ); $SheetOut->write(0,1, encode( "cp1250", "Šš" ); $SheetOut->write(0,2, encode( "cp1250", "Žž" ); ...
At least, I think that's what should happen. Give it a try.
(update: the snippet I posted above is showing numeric character entities for some of the characters -- that was not intentional, but I'm not going to try to fix it -- you know which characters are supposed to be there.)
In reply to Re^3: Slovenian characters problem
by graff
in thread Slovenian characters problem
by JackVanRamars
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |