in reply to Re: UTF8 hash key downgraded when assigned
in thread UTF8 hash key downgraded when assigned

Have you saved it as UTF-8? \xe9\x27\x20 seems to be cp1252 for é'.

($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,

Replies are listed 'Best First'.
Re^3: UTF8 hash key downgraded when assigned
by syphilis (Archbishop) on Dec 01, 2018 at 01:44 UTC
    Have you saved it as UTF-8?

    No ... and can't immediately find a way of doing so on this Windows machine.
    Is that the reason the script, as posted by the OP, failed to compile for me ?

    I thought that my script might have been relevant, since its output matched the output the OP expected.
    But if it's not relevant then please let me know (and I'll mark it so).

    Cheers,
    Rob

      Yes. You told Perl to expect UTF-8, but didn't provide it. Notepad can "Save As" UTF-8.

        Notepad can "Save As" UTF-8

        Yep, got it. Thanks. (Didn't notice the encoding options.)
        The error I was originally getting with gibus' script then evaporates, and I see the same behaviour as gibus reported.
        Again, the behaviour that gibus wanted to see is achieved by assigning the string clé to a variable:
        #!/usr/bin/perl use strict; use warnings; use utf8; use Devel::Peek; use Data::Dumper; $Data::Dumper::Useqq = 1; my $s = 'clé'; my %hash = ( $s => 0, ); my $key = (keys %hash)[0]; Dump($key); print Dumper($key); $hash{$s} = 1; $key = (keys %hash)[0]; Dump($key); print Dumper($key); __END__ Outputs: SV = PV(0x89d7b8) at 0x339d80 REFCNT = 1 FLAGS = (POK,pPOK,UTF8) PV = 0x8992e8 "cl\303\251"\0 [UTF8 "cl\x{e9}"] CUR = 4 LEN = 5 $VAR1 = "cl\x{e9}"; SV = PV(0x89d7b8) at 0x339d80 REFCNT = 1 FLAGS = (POK,pPOK,UTF8) PV = 0x2549998 "cl\303\251"\0 [UTF8 "cl\x{e9}"] CUR = 4 LEN = 5 $VAR1 = "cl\x{e9}";
        But I don't know how relevant that is.

        Cheers,
        Rob