[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Fwd: Romanizare conform cu regulile Aceademiei Romane



On 30-05-2005, at 14h 34'05", Dan Damian wrote about "Re: Fwd: Romanizare conform cu regulile Aceademiei Romane"
> În data de Lu, 30-05-2005 la 12:35 +0200, Ionel Mugurel Ciobica a scris:
> > Verificarea se poate face cu file. Pe un text 8biţi rezultatul este
> > "ISO-8859 text" iar pe UTF-8 rezultatul este "UTF-8 Unicode text".
> 
> In general, verificarea cu file nu-i "reliable" pt. ca file considera
> doar o portiune de inceput a fisierului. Mi s-a intamplat la unele
> fisiere sa nu am diacritice de la inceput si mi-l detecta ca "ASCII
> text" in loc de "UTF-8 Unicode text".
> 

Ai dreptate, alte idei cum se poate deosebi UTF-8 de ISO-8859-x?
(x=2,16)

Aş putea să-l pun să facă grep după diacritice, şi dacă găseşte măcar
una să ia hotărîrea în funcţie de aia. Cel mai sigur ar fi "ă" căci
şţ pot fi cu sedilă sau virgulă, î conţine Ă in varianta UTF-8, şi
ghilimelele conţin â.

Vedeţi noua variantă.

Mugurel
#!/bin/tcsh

#Acest script transformă scrierea pre-92 în post-92
#Copyright I. M. Ciobîcă şi E. Petrişor, GPL, 2005

#Întîi se verifică dacă argumentul există

if ( $# != 1 ) then
   echo "Usage: `basename $0` arg1"
   exit 1
endif

#Apoi se verifică dacă fişierul există

if !( -e $1 ) then
   echo "Usage: `basename $0` arg1"
   echo "with arg1 a (text) file."
   exit 2
endif

#Back-up?

cp -p $1 $1.bak

#Acum căutăm ce fel de codare avem, iso-8859-16 sau UTF-8?
#Comanda file nu este de încredere.

set abreve_iso8859=`grep -c ă $1`
set abreve_utf8=`grep -c Ä? $1`

if ( $abreve_utf8 > 0 ) then
   #avem UTF-8
   echo "UTF-8 text."
   cat $1.bak | sed ':a;s/\([a-zA-Z]\)Î\([a-zA-Z]\)/\1â\2/;ta' | \
              sed ':a;s/\([A-Za-z]\)Ă?\([A-Za-z]\)/\1Ă?\2/;ta' | \
              sed ':a;s/\(\(R\|r\)e\|\(N\|n\)e\|\(D\|d\)e\(s\|z\)\|\(P\|p\)re\|\(P\|p\)ost\)â/\1Î/;ta' | \
              sed ':a;s/\(RE\|\NE\|DE\(S\|Z\)\|PRE\|POST\)Ă?/\1Ă?/;ta' | \
              sed ':a;s/\([Ss]\)ĂŽnt/\1unt/;ta' | \
              sed ':a;s/\([Ss]\)ânt/\1unt/;ta' | \
              sed 's/SĂ?NT/SUNT/g' | sed 's/SĂ?NT/SUNT/g' > $1
   exit 0

endif
if ( $abreve_iso8859 > 0 ) then
   #avem iso-8859-ceva, ceva=2,16
   echo "ISO-8858-x text."
   cat $1.bak | sed ':a;s/\([a-zA-Z]\)î\([a-zA-Z]\)/\1â\2/;ta' | \
                sed ':a;s/\([A-Za-z]\)Î\([A-Za-z]\)/\1Â\2/;ta' | \
                sed ':a;s/\(\(R\|r\)e\|\(N\|n\)e\|\(D\|d\)e\(s\|z\)\|\(P\|p\)re\|\(P\|p\)ost\)â/\1î/;ta' | \
                sed ':a;s/\(RE\|\NE\|DE\(S\|Z\)\|PRE\|POST\)Â/\1Î/;ta' |\
                sed ':a;s/\([Ss]\)[îâ]nt/\1unt/;ta' | \
                sed 's/S[ÎÂ]NT/SUNT/g' > $1
   exit 0
endif

#Asta a fost. "diff $1 $1.bak"?


#Aici se iese dacă "ă" nu a fost detectat nici într-o variantă.
echo "$1 file contains no diacritics."
exit 10

Reply to: