2012-08-09 10 views
5

considerare questo frammento:Come stampare UTF-8 nella shell di Erlang?

Eshell V5.9.1 (abort with ^G) 
1> A="Pamet". 
"Pamet" 
2> A1="Paměť". 
[80,97,109,283,357] 

("Pamet" è la parola ceca per "memoria" L'ho scelto perché contiene due personaggi che Erlang pensa sono "stampabili"..) IIRC Erlang, avendo avuto origine in Svezia , suppone che se un carattere non esiste in Latin 1, non è stampabile. Quindi, anche se sto eseguendo la shell su una moderna macchina Linux in cui tutto è UTF-8, emette un elenco di interi invece di "Pamì".

La mia domanda: come scrivere una stringa UTF-8 sullo schermo in modo che appaia come una stringa di caratteri e non un elenco di numeri interi?

risposta

12

Qui si può trovare alcune spiegazioni su ciò che sta succedendo e come farlo: http://www.erlang.org/doc/apps/stdlib/unicode_usage.html

In sostanza, è possibile verificare che l'utilizzo di qualcosa di simile:

1> lists:keyfind(encoding, 1, io:getopts()). 
{encoding, unicode} 
2> io:format("~ts~n",["Paměť"]). 
Paměť 
ok 
3> 
Problemi correlati