Avatar billede breum Nybegynder
16. juli 2012 - 20:43 Der er 11 kommentarer og
1 løsning

Encoding xn--vrvl-hra.dk ændres til vrøvl.dk og omvendt

Jeg har et program der foretager forskellige funktioner med domænenavne. Desuden har jeg en liste med navnene.
I listen bruges æ ø og å af og til, ved nogle af mine funktioner skal det være sådan, men ved andre skal de være kodet således: xn--vrvl-hra.dk

Kort sagt vil jeg gerne have et par linier der oversætter mellem de 2 formater.

Script 1:
$urltype1="xn--vrvl-hra.dk";
#Her mangler jeg et par linier
print "Det bliver til: $urltype2\n";

Dette script skal give output:
Det bliver til : vrøvl.dk

Script 2:
$urltype2="vrøvl.dk";
#Her mangler jeg et par linier
print "Det bliver til: $urltype1\n";

Dette script skal give output:
Det bliver til : xn--vrvl-hra.dk
Avatar billede erikjacobsen Ekspert
16. juli 2012 - 20:54 #1
Du kan google: perl punycode
Avatar billede breum Nybegynder
16. juli 2012 - 21:07 #2
Tak, så fandt jeg
http://blog.wensheng.com/2011/03/command-line-idn-punycode-convertor.html

men der skal man installere et plugin
use Net::LibIDN ':all';

Bliver man virkelig nødt til installere et sådant - er der ikke en algoritme så man ikke skal installere ekstra?
Avatar billede erikjacobsen Ekspert
16. juli 2012 - 21:37 #3
Nej. Du kan vel hive de to metoder ud af koden, som har brug for (disclaimer: jeg gætter lidt)
Avatar billede breum Nybegynder
16. juli 2012 - 21:46 #4
Nøh de eksempler jeg finder bruger alle den, så nu har jeg forsøgt

sudo cpan -i Net::LibIDN

Men så får jeg fejlmeddelelse
__test1.c:1:18: error: idna.h: No such file or directory
__test1.c:1:18: error: idna.h: No such file or directory
This module requires GNU Libidn, which could not be found.
    -- NOT OK
Running make test
  Can't test without successful make
Running make install
  make had returned bad status, install seems impossible
Avatar billede erikjacobsen Ekspert
16. juli 2012 - 21:50 #5
Ok, da. ;) Lad mig ilge prøve ...
Avatar billede breum Nybegynder
16. juli 2012 - 22:03 #6
Og så troede jeg efter en del søgen at http://www.gnu.org/software/libidn/manual/html_node/Downloading-and-Installing.html ville løse det - men nej
Avatar billede breum Nybegynder
16. juli 2012 - 22:12 #7
Ups måske virker det med en ældre version - der får jeg ingen fejlmeddelelse.
prøver nu ftp://alpha.gnu.org/pub/gnu/libidn/libidn-1.9.tar.gz
Avatar billede breum Nybegynder
16. juli 2012 - 22:32 #8
Nu har jeg fået det installeret, og jeg er tæt på at det virker, nu får jeg punycode, men jeg er åbenbart ikke enig med systemet i hvordan et ø ser ud, men det kan jeg rette med en regexp så snart er jeg flyvende. Tak for hjælpen - navnet "Punycode" var det der fik mig videre.

Hvad jeg endte med at gøre:
Installere GNO LibIDN 1.9 som nævnt ovenfor (nyere versioner viirker ikke til nedenstående)
Installere Net::LibIDN som nævnt ovenfor
bruge koden fra wengsheng ovenfor til scriptet nedenfor.

#!/bin/env perl
use Net::LibIDN ':all';
open (OUTFILE, ">>outfile.txt");
print OUTFILE $ARGV[0] . " Bliver til \n";
print OUTFILE idn_to_ascii($ARGV[0],'utf-8') . "\n";
print OUTFILE idn_to_unicode($ARGV[0],'utf-8') . "\n";
print OUTFILE idn_punycode_encode($ARGV[0],'utf-8') . "\n";
print OUTFILE idn_punycode_decode($ARGV[0],'utf-8') . "\n";
close (OUTFILE);
Avatar billede breum Nybegynder
16. juli 2012 - 22:34 #9
Jeg gav dig gerne point, men husker fra sidste år at du ikke vil have dem. Hvis du dropper et svar - giver jeg dig points, ellers lukker jeg spg om 1 måned og tager points selv.
Avatar billede breum Nybegynder
16. juli 2012 - 22:47 #10
#!/bin/env perl
use Net::LibIDN ':all';
...................
$punydomain=idn_to_ascii($domain,'iso-8859-1');

Endte med at være svaret idet min fil var iso-8859-1 kodet
Avatar billede erikjacobsen Ekspert
16. juli 2012 - 22:50 #11
Nej tak til point. Og du har jo lavet arbejdet.

Jeg rendte også ind i lidt versionsproblemer, på den maskine jeg prøvede. Fik ikke lige startet en anden.
Avatar billede breum Nybegynder
03. september 2012 - 13:22 #12
Ingen anden mulighed
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester