On 20-12-2010, at 12h 51'29", Alin Iorga wrote about "[rlug] Inlocuire 
caractere UTF8"
> Salut,
> 
> Incerc sa inlocuiesc diacritice cu non-diacritice.
> 
> Am incercat si cu sed si cu perl cu ceva de genul instructiunii de mai 
> jos fara success.
> 
> perl -pi -e "s/x{0103}/a/g"
> 
> Aveti alte sugestii cum as putea face asta?
> 
> Sau ca alternativa, poate exista cumva pe linux un tool sau un script 
> relativ simplu sa transforme un text cu diacritice UTF8 in unul fara, 
> codificat ANSI - ma intereseaza caracterele cu caciulite, codite sau 
> alte insemne sa fie transformate in caracterele simple (si eventual sa 
> elimine caracterul de BOM de la inceput de fisier daca este prezent).
> 
> Daca nu, nu sint asa multe caractere care vreau sa le transform si daca 
> e o expresie care sa functioneze pentru un caracter, pot sa fac expresii 
> pentru toate caracterele de care sint interesat.
> 

Daca este vorba de fisier UTF-8 atunci sed s/ă/a/g te rezolva imediat,
daca ai un mediu UTF-8. Daca nu, atunci unicode ă sau unicode "LATIN
SMALL LETTER A WITH BREVE" sau unicode unicode U+0103, iti arata cum
mai poate fi reprezentat caracterul:

| U+0103 LATIN SMALL LETTER A WITH BREVE
| UTF-8: c4 83  UTF-16BE: 0103  Decimal: ă
| ă (Ă)
| Uppercase: U+0102
| Category: Ll (Letter, Lowercase)
| Bidi: L (Left-to-Right)
| Decomposition: 0061 0306

Deci daca ai mediu non-UTF-8 dar 8biti atunci poti scrie sed s/äƒ/a/g.
Daca ai mediu 7biti atunci poti incerca chestii cu \x...

Daca textul nu este UTF-8, atunci poti avea una din urmatoarele
variante:

ã in 8biti (iso8859-x)
&abrev; in html
ă in html
\u{a} in LaTeX
=E3 in mime iso8859-x
=C4=83 in mime UTF-8

Totul se repeta pentru celelalte caractere...


Cel mai simplu este, evident, cu iconv.

Mugurel
_______________________________________________
RLUG mailing list
[email protected]
http://lists.lug.ro/mailman/listinfo/rlug

Raspunde prin e-mail lui