Archive for 15:50
Mudar charset e quebra de linha recursivamente no Linux
by Handrus Nogueira on 15:50, under Dicas, Linux
Nota: Olá meus caros leitores, apesar do ChronosBox ser um ótimo Blog, eu estou focando meus esforços em um blog conjunto com meu amigo Handrus Nogueira, portanto não deixem de visitar o Dev With Passion! Todos os posts do ChronosBox estarão no Dev With Passion, exceto por alguns comentários novos. Abraços!
A algum tempo atrás precisei passar uma aplicação web que utilizava quebras de linha no formato linux e charset iso-8859-1 (US-Latin) para UTF-8 com quebra de linha no formato windows. Na época codifiquei com a ajuda do chronos este script que agora compartilho:
1 2 3 4 5 6 7 8 9 10 | #!/bin/sh #change extensions filter as you need ;) find -type f | egrep "\.php|\.css|\.js|\.html|\.htm" | egrep -v "\.svn" > ./charset_list.txt; while read -r line;do #charset change iconv -f LATIN1 -t UTF-8 "$line" > "${line}2"; mv "${line}2" "$line"; #we adopted dos format for line breaks unix2dos "${line}"; done < ./charset_list.txt > ./charset_after.log 2>&1 #receive list of params and send output to log |
Explicações: O script gera uma lista com todos os arquivos da pasta onde ele se encontra e suas subpastas subsequentes (conforme o filtro explicado na segunda linha do código).
Depois ele lê a lista e aplica as alterações num arquivo cópia. Move o arquivo sobre o anterior e depois altera as quebras de linha. Bastante simples, I LOVE BASH!
Migrando bases de dados LATIN1 para UTF-8 com o PostgreSQL
by Felipe 'chronos' Prenholato on 03:59, under Databases, Debian/Ubuntu, Dicas, Gentoo, Linux, PostgreSQL, Servidores
Nos dias atuais é um padrão que todos os sites e servidores web rodem ao menos com UTF-8 como encoding default, entretanto pode-se encontrar casos onde ainda se roda LATIN1 ou até mesmo ASCII.
O caso que tratamos hoje é de um servidor Debian, versão 5.0.3 (lenny), que usava o encode LATIN1 quando instalado e configurado o Postgresql, e não me deixava criar uma base de dados UTF-8, gerando o seguinte erro:
debian:~# su postgres -c 'createdb teste3 -E UTF-8' createdb: database creation failed: ERROR: encoding UTF8 does not match server's locale en_US DETAIL: The server's LC_CTYPE setting requires encoding LATIN1.