Codificação de arquivos linux(utf-8) x windows (iso-8859-1)

1,433 views
Skip to first unread message

Alex C. Capeletti

unread,
Nov 28, 2011, 6:49:09 AM11/28/11
to tche...@googlegroups.com
Primeiramente Bom dia a todos!
- Pessoal estou com um duvida a respeito das codificações de arquivos que ocorre no linux e posteriormente são abertos no windows;
   
A situação é a seguinte.

Tenho um file-server "centos 5.7 x64" com samba onde compartilho arquivos variados na rede local; Também dentro deste server tem rodando um vmware server com um "conectiva 7 x86" onde tem instalado um "mumps" (um sistema de RP pra quem não conhece); O "mumps" gera relatórios no formato ".txt" e salva no diretório "/dados" que é uma pasta compartilhada do Centos montada no conectiva 7 via nfs; Porem os arquivos gerados pelo "mumps" quando abertos pelo windows ficam sem quebra de linhas e cheio de caracteres estranhos "quadradinhos", sei que existe programas que convertem a codificação do arquivo (ex: unix2dos) mas eu gostaria de resolve-lo de maneira diferente onde os novos arquivos que fossem gerados já ficassem com a codificação compatível com o windows (iso-8859-1); Portanto gostaria de saber se alguem ja passou por algo parecido e se possivel quais medidas adotou para solucionar o problema.

PS: no samba ( Na maquina com Centos - maquina física ) ja inseri parâmetros de codificação que segundo alguns tutoriais corrigiriam o problema.
# Opções de desbloqueio de arquivo

;    kernel oplocks = Yes
;    level2 oplocks = True
;    oplocks = True
;    oplock break wait time = 10
;    oplock contention limit = 2
;    strict locking = Yes
;    strict sync = Yes
    syslog = yes
    password level = 0
    debug level = 0
    display charset = cp850
;   unicode = yes
;   client codepage = 850
   unix charset = cp850
 ;  character set = ISO8859-1


[global]
    workgroup = Emercor
    server string = Server1
    netbios name = Server1
    encrypt passwords = yes
    smb passwd file = /etc/samba/smbpasswd
;    update encrypted = no
    unix password sync = no
    log level = 1
    log file = /var/log/samba.log.%m
    max log size = 100
    socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
    socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
    logon script = startnet.bat
    domain logons = yes
    local master = yes
    preferred master = yes
    domain master = yes
    os level = 254
    dns proxy = No
    security = user
    map to guest = never
    null passwords = no
    wins support = yes
    name resolve order = wins dns bcast
    load printers = yes
    logon path = /home/netlogon
;    logon path = /dados/netlogon
;    dead time = 0
;  unix charset = ISO8859-1
;  unix charset = UTF-8
;  code page = 850
;  character set = ISO8859-1
  dos charset = CP850

# Opções de desbloqueio de arquivo

;    kernel oplocks = Yes
;    level2 oplocks = True
;    oplocks = True
;    oplock break wait time = 10
;    oplock contention limit = 2
;    strict locking = Yes
;    strict sync = Yes
    syslog = yes
    password level = 0
    debug level = 0
    display charset = cp850
;   unicode = yes
;   client codepage = 850
   unix charset = cp850
 ;  character set = ISO8859-1

PS2: existem alguma configurações bem antigas neste arquivo e já estavam ai antes de ser migrado o server.



Carlos Eduardo Alves

unread,
Nov 28, 2011, 8:01:48 AM11/28/11
to tche...@googlegroups.com
O Linux utiliza um caractere para quebra de linha (\n), o Mac também utiliza somente um (\r), já o Windows utiliza dois caracteres para quebra de linha (\n\r), sendo que o aplicativo notepad reconhece as combinações "\n\r" e "\r" como novas linhas, e mostra um caractere desconhecido para o "\n"...
No meio dessa confusão, a melhor solução (a meu ver) poderia ser utilizar outro visualizador, como o notepad++, notepad2 ou outro que reconheça automaticamente esse tipo de recurso de quebra de linha...

Nota: se não me engano, o Linux utiliza por padrão o iso-8859-1 e o windows usa unicode ou utf8. Mas esses problemas de quebra de linha não tem a ver com a codificação.

--
Carlos Eduardo Alves
Analista Desenvolvedor
Usuário Ubuntu
Bash-maníaco nas horas vagas





--
Mensagem enviada para <http://groups.google.com/group/tchelinux>.
Regras de Conduta para o grupo: <http://tchelinux.org/regras>.

Fabio Olive Leite

unread,
Nov 28, 2011, 8:51:39 AM11/28/11
to tche...@googlegroups.com
Olá!

On 2011-11-28 Carlos Eduardo Alves wrote:
> O Linux utiliza um caractere para quebra de linha (\n),

Só pra complementar: todos os sistemas Unix usam \n.

> o Mac também utiliza somente um (\r),

Os Macs antigos sim, os atuais são baseados em Unix e usam \n.

> já o Windows utiliza dois caracteres para quebra de linha (\n\r),

Sim, isso vinha do DOS e outros sistemas mais antigos também. Na
verdade a ordem correta é \r\n (CR e LF, em ASCII).

> Nota: se não me engano, o Linux utiliza por padrão o iso-8859-1 e o
> windows usa unicode ou utf8. Mas esses problemas de quebra de linha
> não tem a ver com a codificação.

Hoje em dia todas as distribuições usam UTF-8. Para consultar a
configuração local da sua distro, basta abrir um terminal e rodar o
comando locale. No meu Fedora é:

$ locale
LANG=en_US.utf8
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
...

:)

--
[[ Fábio Olivé Leite, olive, FabioOlive ]]
TcheLinux.org, OeSC-Livre.org, Chapecó, SC
ex sed lex awk yacc, e pluribus unix, amem

Alex C. Capeletti

unread,
Nov 28, 2011, 8:41:42 AM11/28/11
to tche...@googlegroups.com
Então.....  antes de migrar para esta estrutura de "virtualização", quando o mumps rodava diretamente na maquina física não tínhamos este problema pois o samba mesmo se encarregava de entregar o arquivo na codificação padrão do windows; Portanto podendo ser visualizado com o "bloco de notas" mesmo.....  mas agora isto não ocorre mais.... Será que não existe nem uma outra alternativa para isto??

Alex C. Capeletti

unread,
Nov 29, 2011, 7:33:21 AM11/29/11
to tche...@googlegroups.com
Obrigado pelo apoio Fabio!!!

A solu��o encontrada foi a seguinte!

codifica��o do linux no diretorio /etc/sysconfig/i18n
Continha nele:

LANG="pt_BR.UTF-8"
SYSFONT="latarcyrheb-sun16"


Foi inserido no nele:

LANG="pt_BR.UTF-8"
LANG="pt_BR.ISO-8859-1"
SYSFONT="latarcyrheb-sun16"
SYSFONT="latarcyrheb-sun16"
LC_ALL="pt_BR"
#LC_CTYME="ISO-8859-1"
LESSCHASET="latin1"
LC_TELEPHONE="pt_BR.ISO-8859-1"
LC_CTYPE="pt_BR.ISO-8859-1"
LANGUAGE="pt_BR.ISO-8859-1"
LC_MONETARY="pt_BR.ISO-8859-1"
LC_ADDRESS="pt_BR.ISO-8859-1"
LC_COLLATE="pt_BR.ISO-8859-1"
LC_PAPER="pt_BR.ISO-8859-1"
LC_NAME="pt_BR.ISO-8859-1"
LC_NUMERIC="pt_BR.ISO-8859-1"
SYSFONT="lat1-16"
LC_MEASUREMENT="pt_BR.ISO-8859-1"
LC_TIME="pt_BR.ISO-8859-1"
#LANG=pt_BR.ISO-8859-1
LC_IDENTIFICATION="pt_BR.ISO-8859-1"
LC_MESSAGES="pt_BR.ISO-8859-1"


seguindo estas dicas:

http://www.vivaolinux.com.br/perguntas/verPergunta.php?codigo=51872
<cid:part1.06060...@linustec.com.br>
http://centosbr.org/modules/newbb/viewtopic.php?topic_id=2050&forum=23&post_id=10399#forumpost10399
<cid:part2.09020...@linustec.com.br>

OBS: � necess�rio reiniciar!

Espero que ajude outros tamb�m!

Em 28-11-2011 11:51, Fabio Olive Leite escreveu:
> Ol�!


>
> On 2011-11-28 Carlos Eduardo Alves wrote:
>> O Linux utiliza um caractere para quebra de linha (\n),

> S� pra complementar: todos os sistemas Unix usam \n.
>
>> o Mac tamb�m utiliza somente um (\r),
> Os Macs antigos sim, os atuais s�o baseados em Unix e usam \n.
>
>> j� o Windows utiliza dois caracteres para quebra de linha (\n\r),
> Sim, isso vinha do DOS e outros sistemas mais antigos tamb�m. Na
> verdade a ordem correta � \r\n (CR e LF, em ASCII).
>
>> Nota: se n�o me engano, o Linux utiliza por padr�o o iso-8859-1 e o


>> windows usa unicode ou utf8. Mas esses problemas de quebra de linha

>> n�o tem a ver com a codifica��o.
> Hoje em dia todas as distribui��es usam UTF-8. Para consultar a
> configura��o local da sua distro, basta abrir um terminal e rodar o
> comando locale. No meu Fedora �:

Reply all
Reply to author
Forward
0 new messages