2016-08-08 44 views
-1

Wenn Sie den Text haben:Wie behandelt man Unicode im Format uXXXX?

"Conseil de Disziplin de l \ u0027Ordre des comptables professionnels agréés du Québec"

Wie gehe ich mit dem \u0027, was offensichtlich ein Apostroph einiger ist Sortieren. Wie kann ich dies in ein lesbares Zeichen umwandeln?

Die Daten stammen von JSON.

+0

http://search.cpan.org/~you/Encode-Escape-0.14/lib/Encode/Escape/Unicode.pm – dsm

+0

Verwenden Sie JSON :: XS ... – ysth

+0

@ysth Hat nicht funktioniert. Ich habe die vollständige JSON-Zeichenkette mit 'decode_json' dekodiert und es hat immer noch das Literal" \ u0027 "ausgedruckt, als ich das Objekt entsorgte. – CJ7

Antwort

1
use utf8; 
use JSON::XS; 
use open OUT => ':utf8'; 
my $decoder = JSON::XS->new->allow_nonref(1); 
my $json_string = '"Conseil de discipline de l\\u0027Ordre des comptables professionnels agréés du Québec"'; 
printf "in: %s\nout: %s\n", $json_string, $decoder->decode($json_string); 

funktioniert für mich. (Verwendung utf8 für wörtlichen utf8 in der Perl-Quelle benötigt, allow_nonref eine nur eine Zeichenfolge zu entschlüsseln benötigte, nicht ein Objekt oder ein Array)

Wenn in der Tat haben Sie einige doppelt kodierten Strings, könnten Sie tun:

$string =~ s/\\u([[:xdigit:]]{4})/chr hex $1/g; 
+0

Ich erhalte einen 'Wide character in subroutine entry' Fehler in der 'decode_json' Zeile. – CJ7

+0

Es scheint, als wäre die 'open OUT verwenden =>': utf8 '; 'ist unnötig. Hab ich recht? – CJ7