Personagem euro confuso durante a transferência por FTP

2

Meu cliente está usando um sistema muito gerenciamento de comércio eletrônico desatualizado no meu serviço de hospedagem. Para esse produto, nenhum suporte está sendo fornecido pelo fornecedor.

Breve explicação: o site da loja, que afirma para ser executado na pilha LAMP, é criado por um aplicativo antigo do Visual Basic do Windows em execução no MS Access. O usuário constrói a loja, define o modelo HTML, adiciona produtos e categorias, etc.

Então o exe VB constrói as páginas PHP (uma para cada página de template) e o script SQL para rodar no MySQL. Também faz o upload de tudo via FTP e executa o script de instalação / atualização por conta própria.

O problema

Navegando no site, muitas descrições de produtos são cortadas antes do sinal euro . Por exemplo, o que deveria ser "Preço do produto 1000 €" torna-se "Preço do produto"

A análise

  • O MySQL contém uma descrição cortada até o sinal de €, então não é culpa do PHP
  • Os bancos de dados do Access contêm descrição completa com sinal de €, portanto, não é culpa do webmaster escrever uma descrição incorreta ou do eDisplay cortá-los
  • O SQL que será executado assim que o site for carregado, armazenado na minha máquina local antes do upload, contém o sinal de €
  • O mesmo script, depois de ser submetido a FTP por eDisplay e aberto com o nano do SSH, mostra o sinal de € confuso assim:
  • relatórios de log vsftpd (ofuscados para privacidade) Sat Dec 15 11:16:57 2012 22 xxx.xxx.128.13 1112727 /srv/www/domains/xxxxxx.it/htdocs/db.sql b _ i r xxxxxxx ftp 0 * c , que parece ser uma transferência binária (e também uma enorme vulnerabilidade de segurança porque você pode baixar o banco de dados inteiro de HTTP não autenticado)
  • O cliente de FTP interno eDisplay fornece a opção no para os modos de transferência ascii / binary
  • [Add] Tentando carregar manualmente o arquivo SQL via SFTP mostra bagunça euro
  • [Add2] Tentar fazer upload manualmente usando o cliente Xftp com o modo ASCII explícito também não corrige

Parece que o arquivo é carregado como binário. Talvez no host anterior do cliente tudo funcionou bem porque era um host do Windows.

O servidor

É uma máquina virtual do Azure que executa o openSUSE 12.2 com vsftpd e openSSH

A questão

Sem pedir ao cliente para carregar manualmente arquivos usando o FileZilla ou substituindo por € , porque ele se recusa, o que posso fazer no lado do servidor para evitar que o vsftpd estrague sinais de euro?

    
por usr-local-ΕΨΗΕΛΩΝ 15.12.2012 / 12:11

2 respostas

0

A correção parcial

Ao definir o conjunto de caracteres padrão do MySQL diferente de UTF-8, posso exibir corretamente o Euro

Source

#default-character-set = utf8
collation-server = latin1_general_ci
#init-connect='SET NAMES latin1_general_ci'
character-set-server = latin1

A primeira linha é comentada porque minha versão do MySQL não a reconheceu Terceiro é comentado porque eu tenho um erro em cada conexão registrada no log do servidor e conexão truncada (para cada site offline)

Estou dizendo que a correção é parcial porque eu ignorei o upload do FTP e executei o SQL diretamente no phpMyAdmin com o símbolo Euro correto

    
por 15.12.2012 / 17:32
2

Você pode tentar alterar a codificação do arquivo SQL junto com o delimitador de linha. Ou você pode alterar todo o símbolo para € .

    
por 15.12.2012 / 13:08

Tags